【1181】整数奇偶排序

【问题描述】
       给定10个整数的序列,要求对其重新排序。排序要求:
       1.奇数在前,偶数在后;
       2.奇数按从大到小排序;
       3.偶数按从小到大排序。。
【输入】
       输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。。
【输出】
       按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。。
【输入样例】
       4 7 3 13 11 12 0 47 34 98
【输出样例】
       47 13 11 7 3 0 4 12 34 98
【参考程序】

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
	int n=10, num, p=0, q=0; 
	int a[11], b[11];					// a:存储奇数;	b:存储偶数		
	
	for (int i=1; i<=n; i++) {			// 输入原始10个数字 
		cin >> num;
		if (num % 2 == 1) {				// 奇数存储到数组a 
			a[++p] = num;
		} else {
			b[++q] = num;				// 偶数存储到数组b 
		}
	}
	
	for (int i=1; i<p; i++) {			// 奇数从大到小,选择排序 
		for (int j=i+1; j<=p; j++) {
			if (a[i] < a[j]) {
				swap(a[i], a[j]);
			}
		} 
	} 	
	for (int i=1; i<q; i++) {			// 偶数从小到大,选择排序 
		for (int j=i+1; j<=q; j++) {
			if (b[i] > b[j]) {
				swap(b[i], b[j]);
			}
		} 
	} 
	
	for (int i=1; i<=p; i++) {			// 先输出奇数 
		printf("%d ", a[i]);
	}
	for (int i=1; i<=q; i++) {			// 再输出偶数 
		printf("%d ", b[i]);
	} 
	
	return 0;
}
发布了66 篇原创文章 · 获赞 0 · 访问量 1223

猜你喜欢

转载自blog.csdn.net/developer_zhb/article/details/105464254