双指针想法
不开辟新的数组
时间复杂度(n^2)
public class OddEvenSort {
public static void sort(int[] arrays) {
int right = arrays.length - 1;
int left = 0;
while(left <= right) {
if (arrays[left] % 2 != 0) {
int tempLeft = left;
int tempNumber = arrays[left];
while(--tempLeft >= 0 && tempNumber < arrays[tempLeft]) {
arrays[tempLeft + 1] = arrays[tempLeft];
}
arrays[++tempLeft] = tempNumber;
left++;
} else {
int tempRight = left;
int tempNumber = arrays[left];
while(++tempRight < arrays.length && (tempRight <= right || tempNumber >= arrays[tempRight])) {
arrays[tempRight - 1] = arrays[tempRight];
}
arrays[--tempRight] = tempNumber;
right--;
}
}
}
}
验证
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = random.nextInt(100);
}
System.out.println(Arrays.toString(arr));
OddEvenSort.sort(arr);
System.out.println(Arrays.toString(arr));
}