题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。
思路:可以采用双指针的方法,让第一个指针指向偶数,第二个指针指向奇数,并且第一个指针在第二个指针的前面,就交换两个元素。这样,当第一个指针在第二个指针的后面的时候,就说明所有的奇数都移动到所有偶数的前面了。这时候的循环就可以结束了。
public static void reOrderArray(int [] array) {
if(array == null || array.length == 0)
return;
int begin = 0;
int end = array.length - 1;
while(begin < end){
while(begin < end && (array[begin] & 0x1)!=0){
begin++;
}
while(begin < end && (array[end] & 0x1)==0){
end--;
}
if(begin < end){
int temp = array[begin];
array[begin] = array[end];
array[end] = temp;
}
}
}

本文介绍了一种使用双指针技巧实现的数组排序算法,该算法能够将输入数组中的所有奇数放置在数组的前半部分,而所有的偶数则放置在数组的后半部分。通过迭代方式,算法确保了奇数和偶数的有效分离。
5950

被折叠的 条评论
为什么被折叠?



