用C语言编译代码,要求调整数组使奇数全部都位于偶数前面
时间: 2024-05-11 19:18:50 浏览: 95
2007[陈意云的习题集].pdf
可以双指针法来实现将数组中的奇数放到偶数前面,具体步骤如下:
1. 定义两个指针i和j,分别指向数组的开头和结尾。
2. 循环遍历数组,当i<j时执行以下步骤:
- 如果a[i]为奇数,i指针向右移动一位;
- 如果a[j]为偶数,j指针向左移动一位;
- 如果a[i]为偶数且a[j]为奇数,交换a[i]和a[j]的值,然后i指针向右移动一位,j指针向左移动一位。
3. 循环结束后,数组中奇数都位于偶数前面。
以下是代码示例:
```c
#include <stdio.h>
void adjustArray(int a[], int n) {
int i = 0, j = n - 1;
while (i < j) {
if (a[i] % 2 != 0) {
i++;
} else if (a[j] % 2 == 0) {
j--;
} else {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
}
int main() {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(a) / sizeof(int);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
adjustArray(a, n);
printf("\nAdjusted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
输出结果为:
```
Original array: 1 2 3 4 5 6 7 8 9
Adjusted array: 1 9 3 7 5 6 4 8 2
```
阅读全文