有一个正整数数组a, 请设计一个高效算法,实现将偶数放在奇数之前。
时间: 2023-06-05 22:47:59 浏览: 156
调整数组顺序使奇数位于偶数前面.md
可以使用双指针法,一个指针指向数组的开头,另一个指针指向数组的末尾。然后,分别从两个方向遍历数组,当左指针指向的数为偶数,右指针指向的数为奇数时,交换两个数的位置。直到左指针和右指针相遇为止,这样就可以将偶数放在奇数之前。
具体实现如下:
1. 定义两个指针i和j,分别指向数组的开头和末尾。
2. 循环遍历数组,当i<j时执行以下操作:
a. 如果a[i]为奇数,i++。
b. 如果a[j]为偶数,j--。
c. 如果a[i]为偶数,a[j]为奇数,交换a[i]和a[j]的值,i++,j--。
3. 循环结束后,数组中的偶数就都放在了奇数之前。
时间复杂度为O(n),空间复杂度为O(1)。
阅读全文