关于排序的问题
将一整数列按奇数在前,偶数在后的顺序排列,并要求奇偶2部分均分别有序假设有10个数字 2 8 13 20 9 1 45 33 48 7
现在要改变成 1 7 9 13 33 45 2 8 20 48
#include <stdio.h> #include <stdlib.h> int comp( const void * p, const void * q) { int a = *( int * )p; int b = *( int * )q; if (a%2-b%2==0) return a-b; else return b%2-a%2; } int main() { int a[10];//以10为例 int i; printf("Input 10 numbers:"); for (i=0;i<10 ;i++ ) scanf("%d",a+i); qsort(a,10,sizeof(int),comp); for (int i=0;i<10 ;i++ ) printf("%d ",a[i]); return 0; }