【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;
}












原文地址:https://www.cnblogs.com/CoffeeSoul/p/13823894.html