c语言实现调整数组使奇数全部都位于偶数前面,用指针完成。
时间: 2024-05-02 09:16:19 浏览: 112
可以使用两个指针,一个指向数组第一个元素,一个指向数组最后一个元素,从两端向中间遍历数组,当左指针指向的元素为偶数,右指针指向的元素为奇数时,交换这两个元素。直到左指针和右指针相遇。
下面是完整的代码实现:
```c
#include <stdio.h>
void adjust(int *arr, int size) {
int *left = arr;
int *right = arr + size - 1;
while (left < right) {
while (*left % 2 != 0 && left < right) {
left++;
}
while (*right % 2 == 0 && left < right) {
right--;
}
if (left < right) {
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(arr) / sizeof(int);
adjust(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个代码中,`adjust` 函数使用两个指针 `left` 和 `right` 分别指向数组的第一个元素和最后一个元素。然后不断移动这两个指针,直到 `left` 和 `right` 相遇。在移动指针的过程中,如果 `left` 指向的元素是奇数,则继续向后移动,直到找到一个偶数;如果 `right` 指向的元素是偶数,则继续向前移动,直到找到一个奇数。然后交换这两个元素。最终得到的数组中,所有奇数都在偶数的前面。
阅读全文
相关推荐

















