C++输入10个整数,将这10个整数按升序排列输出,并且奇数在前,偶数在后,例如,如果输入的10个数是10,9,8,7,6,5,4,3,2,1,则输出1,3,5,7,9,2,4,6,8,10.
时间: 2024-05-10 10:14:09 浏览: 84
好的,以下是实现该功能的 C 代码:
```c
#include <stdio.h>
// 交换两个元素的值
void swap(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
// 快速排序
void quicksort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right, pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
swap(&arr[i], &arr[j]);
}
while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
swap(&arr[i], &arr[j]);
}
}
quicksort(arr, left, i - 1);
quicksort(arr, i + 1, right);
}
int main() {
int arr[10];
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
// 对数组进行升序排序
quicksort(arr, 0, 9);
// 将奇数放在前面,偶数放在后面
int i = 0, j = 9;
while (i < j) {
while (i < j && arr[i] % 2 == 1) {
i++;
}
while (i < j && arr[j] % 2 == 0) {
j--;
}
if (i < j) {
swap(&arr[i], &arr[j]);
}
}
// 输出排序后的结果
printf("排序后的结果为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行程序,输入 10 个整数,即可得到排序后的结果。
阅读全文