将奇数移到偶数前面
时间: 2024-02-27 22:58:51 浏览: 31
实现这个功能的方法可以使用双指针,一个指向数组的开头,一个指向数组的末尾。从开头开始遍历数组,当遇到偶数时停下来,从末尾开始遍历数组,当遇到奇数时停下来,然后交换这两个位置上的数值。继续这个过程,直到两个指针相遇为止。这样就能将所有奇数移到所有偶数前面。
以下是对应的代码实现:
```
void moveOddBeforeEven(int arr[], int length) {
int left = 0; // 指向数组开头的指针
int right = length - 1; // 指向数组末尾的指针
while (left < right) {
// 从开头开始遍历数组,找到偶数
while (left < right && arr[left] % 2 == 0) {
left++;
}
// 从末尾开始遍历数组,找到奇数
while (left < right && arr[right] % 2 == 1) {
right--;
}
// 交换偶数和奇数的位置
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
```
可以通过调用 `moveOddBeforeEven` 函数来实现将所有奇数移到所有偶数前面。需要注意的是,这个函数只能处理整数数组,对于其他类型的数组需要做相应的修改。