用c语言编写一个奇数排在偶数前
时间: 2024-10-20 14:18:10 浏览: 18
给定N个正整数,请统计奇数和偶数各有多少个-C语言代码
在C语言中,我们可以使用数组和两个指针,一个指向奇数,另一个指向偶数,同时遍历数组。当遇到奇数时,我们将其插入到奇数指针所指向的位置;当遇到偶数时,插入到偶数指针之后。以下是简单的示例:
```c
#include <stdio.h>
void sort_odd_even(int arr[], int size) {
if (size <= 1) return;
int odd = 0, even = 1; // 奇数指针从0开始,偶数指针从1开始
for (int i = 1; i < size; ++i) {
if (arr[i] % 2 == 0) { // 如果当前元素是偶数
arr[even++] = arr[i]; // 将它移动到偶数部分
} else { // 如果当前元素是奇数
arr[odd++] = arr[i]; // 将它移动到奇数部分,并更新奇数指针
}
}
// 如果奇数部分还有剩余空间,将剩下的奇数放回原位置
while (odd < size) {
arr[odd++] = arr[size - 1];
--size;
}
}
// 测试函数
int main() {
int arr[] = {5, 2, 9, 4, 7, 6};
int size = sizeof(arr) / sizeof(arr[0]);
sort_odd_even(arr, size);
printf("Sorted array with odd numbers first: ");
for (int i = 0; i < size; ++i)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
当你运行这个程序,输入数组 `{5, 2, 9, 4, 7, 6}` 会变为 `{5, 9, 7, 2, 4, 6}`。
阅读全文