调整输入数组a[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数。
时间: 2023-04-27 21:03:10 浏览: 157
剑指Offer(Python多种思路实现):调整数组的顺序使奇数位于偶数前面
可以使用双指针法,定义两个指针i和j,分别指向数组的第一个元素和最后一个元素。然后,不断移动指针i和j,直到i和j相遇为止。
在移动指针的过程中,如果a[i]是偶数,a[j]是奇数,就交换它们的位置。这样,每次交换后,左边的元素都是奇数,右边的元素都是偶数。最终,i和j相遇的位置就是分界点,左边的元素都是奇数,右边的元素都是偶数。
具体实现可以参考以下代码:
void adjustArray(int a[], int n) {
int i = , j = n - 1;
while (i < j) {
while (i < j && a[i] % 2 == 1) i++; // 找到第一个偶数
while (i < j && a[j] % 2 == ) j--; // 找到第一个奇数
if (i < j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
阅读全文