【C语言简单排序】—— 整数奇偶排序


7-1 整数奇偶排序 

  给定10个整数的序列,要求对其重新排序。

  排序要求:

  1.奇数在前,偶数在后;

  2.奇数按从大到小排序;

  3.偶数按从小到大排序。

输入格式:

  输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。

输出格式:

  请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。

输入样例:

  按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。

 4 7 3 13 11 12 0 47 34 98

输出样例:

  在这里给出相应的输出。例如:

 

 47 13 11 7 3 0 4 12 34 98 

 

思路:

  这里分析题目,发现有三种情况下需要进行排序:
  1.a[j]为奇数,a[j+1]为偶数
  2.a[j]为奇数,a[j+1]为奇数且a[j] < a[j+1]
  3.a[j]为偶数,a[j+1]为偶数且a[j] > a[j+1]

代码:

#include<stdio.h>
int main() { int n = 10,i,j,tmp; int a[10]; for(i = 0; i < n; i++) { scanf("%d",&a[i]); } for(i = 0; i < n-1; i++) { for(j = 0; j < n-1; j++) { if(a[j] % 2 == 0 && a[j+1] % 2 != 0 || a[j] % 2 != 0 && a[j+1] % 2 != 0 && a[j] < a[j+1] || a[j] % 2 == 0 && a[j+1] % 2 ==0 && a[j] > a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } for(i = 0; i < n; i++) { printf("%d ",a[i]); } return 0; }

 














免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM