题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
思路:使用双指针法
代码实现:时间复杂度 O(n),空间复杂度 O(1)
public void reOrderArray(int[] array) {
if(array == null || array.length == 0) {
return;
}
int low = 0;
int high = array.length - 1;
while(low < high) {
while(low < high && array[high] % 2 == 0) {
high--;
}
while(low < high && array[low] % 2 == 1) {
low++;
}
if(low < high) {
int temp = array[low];
array[low] = array[high];
array[high] = temp;
}
}
}