问题:
给定一个int数组要求排序, 排序完奇数在左边 偶数在右边
规定: 1.最多只用一层循环 2.不创建新的数组/集合
1. 自己写的:
public static void main(String[] args) {
int[] arr = new int[] {2, 1, 5, 4, 6, 3};
System.out.println(Arrays.toString(sort(arr)));
}
private static int[] sort(int[] arr) {
boolean flag = false;
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (i < arr.length - 1) {
if (arr[i] % 2 == arr[i + 1] % 2) {
if (arr[i] > arr[i + 1]) {
flag = true;
index = i;
break;
}
} else {
if (arr[i] % 2 == 0) {
flag = true;
index = i;
break;
}
}
}
}
if (flag) {
int temp = arr[index];
arr[index] = arr[index + 1];
arr[index + 1] = temp;
return sort(arr);
} else {
return arr;
}
}
2. 别人写的①
3. 别人写的②