c语言奇偶排序
时间: 2023-08-24 18:16:15 浏览: 131
以下是 C 语言实现奇偶排序的代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void oddEvenSort(int arr[], int n) {
int i, j, odd_idx;
for (i = 0; i < n-1; i++) {
odd_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] % 2 && arr[j] < arr[odd_idx])
odd_idx = j;
if (i != odd_idx)
swap(&arr[i], &arr[odd_idx]);
}
for (i = 0; i < n-1; i++) {
if (arr[i] % 2 == 0) {
int min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] % 2 == 0 && arr[j] < arr[min_idx])
min_idx = j;
if (i != min_idx)
swap(&arr[i], &arr[min_idx]);
}
}
}
int main() {
int n, i;
scanf("%d", &n);
int arr[n];
for (i = 0; i < n; i++)
scanf("%d", &arr[i]);
oddEvenSort(arr, n);
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
```
其中,`oddEvenSort()` 函数实现了奇数排在偶数前面并且奇数与偶数各自从小到大排列的排序算法。首先,它找到第一个奇数的位置,然后将其与当前位置交换;接着,它对剩下的偶数进行从小到大的选择排序。
时间复杂度为 O(n^2),但由于数据规模较小,所以可以通过本题。
阅读全文