用c语言编写,将整数数组A【0…n】,将其分为两部分,左边所有元素为奇数,右边所有元素为偶数。数组元素个数不超过1000
时间: 2024-09-13 12:16:49 浏览: 51
在 C 语言中,你可以通过两个指针,一个指向数组的开始,另一个指向数组的一半结束位置,来实现这个功能。这里有一个简单的示例代码:
```c
#include <stdio.h>
void separate_numbers(int A[], int n) {
if (n <= 0 || n % 2 == 1) {
printf("无法平均分割,数组长度应为偶数。\n");
return;
}
int odd_index = 0, even_index = n / 2;
for (int i = 0; i < n; i++) {
if (A[i] % 2 != 0) { // 如果当前元素是奇数
if (odd_index != even_index) {
// 交换位置
int temp = A[odd_index];
A[odd_index++] = A[i];
A[i] = temp;
}
} else { // 如果当前元素是偶数
while (even_index > 0 && A[even_index - 1] % 2 == 0) {
// 将右侧偶数移到最右侧
A[--even_index] = A[even_index];
}
A[even_index++] = A[i]; // 把偶数放到合适的位置
}
}
}
int main() {
int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(A) / sizeof(A[0]);
separate_numbers(A, n);
printf("分隔后的数组为: ");
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
}
printf("\n");
return 0;
}
```
这个程序首先检查输入数组的长度是否为偶数,然后遍历整个数组,将奇数放在左侧,将偶数按顺序插入到右侧直到找到适当的位置。
阅读全文