给定一个数组调整数组元素的顺序,使奇数全在数组前半部分;偶数全在数组后半部分。
思路:
快排双指针思维,left,right两个指针,
left,right从数组两边向中间遍历,偶奇数互换
(代码示例)
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9,10};
print(a);
int left = 0;
int right = a.length - 1;
while(left <= right) {
while((a[left]&1) == 1) left++;
while((a[right]&1) == 0) right--;
if(left < right)//考虑全为奇数或偶数的特殊情况,不用交换
swap(a, left, right);
}
print(a);
}
static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
static void print(int[] arr) {
for (int i : arr) {
System.out.print(i+" ");
}
System.out.println();
}
网友评论