package com.arr;
import java.util.Arrays;
//将数组的奇数放在数组左边,偶数放在右边
public class JiOuSort {
public static void main(String[] args) {
int[] arr = {3, 1, 4, 2, 5, 6};
// getSortedJiOuArr_01(arr);
// getSortedJiOuArr_02(arr);
System.out.println(Arrays.toString(arr));
}
public static void getSortedJiOuArr_01(int[] arr) {//不改变数组元素相对位置
if (arr == null) return;
int p1 = 0, p2;
int len = arr.length;
while (p1 < len) {
while (p1 < len && arr[p1] % 2 != 0) {//找到第一个偶数
p1++;
}
p2 = p1 + 1;
while (p2 < len && arr[p2] % 2 == 0) {//找到第一个奇数
p2++;
}
if (p2 < len) {//[p1,p2] 间的数从p2-1依次右移一位
int temJI = arr[p2];
while (p2 > p1) {
arr[p2] = arr[p2 - 1];
p2--;
}
arr[p1] = temJI;
p1++;
} else {
break;
}
}
}
public static void getSortedJiOuArr_02(int[] arr) {//改变数组元素相对位置
//左边遍历找偶数,右边遍历找奇数,交换
if (arr == null) return;
int left = 0;
int right = arr.length - 1;
while (left < right) {
while (left < right && arr[left] % 2 != 0) {
left++;
}
while (left < right && arr[right] % 2 == 0) {
right--;
}
if (left < right) {
int tem = arr[right];
arr[right] = arr[left];
arr[left] = tem;
}
}
}
}
数组中的奇数放左端,偶数放右端
最新推荐文章于 2024-07-16 21:07:32 发布