题解 | #整数奇偶排序#
整数奇偶排序
https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163
#include <stdio.h>
#include <stdlib.h>
int cmp1(const void* a, const void* b) {
return *(int*)a < *(int*)b;
}
int cmp2(const void* a, const void* b) {
return *(int*)a > *(int*)b;
}
int main() {
int a[10];
int odd[10], even[10];
int oddCount = 0, evenCount = 0;
while (scanf("%d %d %d %d %d %d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4],
&a[5], &a[6], &a[7], &a[8], &a[9]) != EOF) {
oddCount = evenCount = 0;
// 将奇数和偶数分别存储在两个数组中
for (int i = 0; i < 10; i++) {
if (a[i] % 2 == 1) {
odd[oddCount++] = a[i];
} else {
even[evenCount++] = a[i];
}
}
// 对奇数数组进行降序排序
qsort(odd, oddCount, sizeof(int), cmp1);
/*冒泡排序写法
for (int i = 0; i < oddCount - 1; i++) {
for (int j = 0; j < oddCount - i - 1; j++) {
if (odd[j] < odd[j + 1]) {
int temp = odd[j];
odd[j] = odd[j + 1];
odd[j + 1] = temp;
}
}
}
*/
// 对偶数数组进行升序排序
qsort(even, evenCount, sizeof(int), cmp2);
/*冒泡排序写法
for (int i = 0; i < evenCount - 1; i++) {
for (int j = 0; j < evenCount - i - 1; j++) {
if (even[j] > even[j + 1]) {
int temp = even[j];
even[j] = even[j + 1];
even[j + 1] = temp;
}
}
}
*/
// 输出排序后的奇数和偶数
for (int i = 0; i < oddCount; i++) {
printf("%d ", odd[i]);
}
for (int i = 0; i < evenCount; i++) {
printf("%d ", even[i]);
}
printf("\n"); // 每组数据输出后换行
}
return 0;
}
