题解 | #整数奇偶排序#
整数奇偶排序
https://www.nowcoder.com/practice/bbbbf26601b6402c9abfa88de5833163
#include <stdio.h>
void quick_sort1(int num[], int low, int high) {//升序
int i, j;
int temp = 0;
int tmp;
i = low;
j = high;
tmp = num[low];
if (i > j) {
return;
}
while (i != j) {
while (num[j] >= tmp && j > i) {
j--;
}
while (num[i] <= tmp && j > i) {
i++;
}
if (j > i) {
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
num[low] = num[i];
num[i] = tmp;
quick_sort1(num, low, i - 1);
quick_sort1(num, i + 1, high);
}
void quick_sort2(int num[], int low, int high) {
int i, j;
int temp = 0;
int tmp;
i = low;
j = high;
tmp = num[low];
if (i > j) {
return;
}
while (i != j) {
while (num[j] <= tmp && j > i) {
j--;
}
while (num[i] >= tmp && j > i) {
i++;
}
if (j > i) {
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
num[low] = num[i];
num[i] = tmp;
quick_sort2(num, low, i - 1);
quick_sort2(num, i + 1, high);
}
int main() {
int arr[10] = { 0 };
for (int i = 0; i < 10; i++){
scanf("%d", &arr[i]);
}
int a[10] = { 0 };//偶数
int b[10] = { 0 };//奇数
int j = 0;
int q = 0;
for(int i =0;i<10;i++){
if (arr[i] % 2 == 0) {
a[j] = arr[i];
j++;
}
else {
b[q] = arr[i];
q++;
}
}
quick_sort1(a, 0, j - 1);
quick_sort2(b, 0, q - 1);
for (int i = 0; i < q; i++) {
printf("%d ", b[i]);
}
for (int i = 0; i < j; i++) {
printf("%d ", a[i]);
}
return 0;
}
