AcWing打卡活动
《剑指Offer》打卡活动
周二第九题 调整数组顺序使奇数位于偶数前面
/**
* 思路
* a.使用两个索引分别指向数组的第一个和最后一个元素
* b.当第一个索引指向的元素为偶数和第二个索引指向的元素为奇数时,
* 交换两个索引指向的值
* c.循环b操作,停止条件为 begin > end
* 1 & 1 = 1; 0 & 1 = 0; 1 & 0 = 0
*
*/
class Solution {
public void reOrderArray(int [] array) {
// 两个索引,分别指向数组的第一个和最后一个元素
int begin = 0;
int end = array.length - 1;
while(begin < end) {
// 当begin指向偶数时,循环停止
while(begin < end && (array[begin] & 0x1) != 0) {
begin++;
}
// 当end指向奇数时,循环停止
while(begin < end && (array[end] & 0x1) == 0) {
end--;
}
// 交换元素
if(begin < end) {
int temp = array[begin];
array[begin] = array[end];
array[end] = temp;
}
}
}
}