应用任何排序算法并将比较器用作比偶数“小于”奇数的偶数 . 这使您可以使用良好的排序算法,同时仍按您希望的方式对元素进行排序 .
这是我的gnome排序实现和我的比较功能:
private static void sort(int[] arr) {
int index = 0;
int n = arr.length;
while (index < n) {
if (index == 0)
index++;
if (compare(arr[index], arr[index - 1]))
index++;
else {
int temp = arr[index];
arr[index] = arr[index - 1];
arr[index - 1] = temp;
index--;
}
}
}
private static boolean compare(int a, int b) {
if (a % 2 == b % 2) return a > b;
return a % 2 == 1;
}
public static void main(String[] args) {
int[] a = {3, 2, 5, 6, 4, 9, 11, 7};
sort(a);
for (int i : a) {
System.out.print(i + " ");
}
}
工作良好 . 尝试其他排序算法 .
TL; DR:使用函数,而不是使用“”比较项目 .