我的问题是,如果我想更改我的排序方法,以降序排序必须完成的工作? (学习决赛)
我的方法如下
public void selectionsort(Comparable[] array) {
for (int i = 0; i < array.length; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j].compareTo(array[i]) < 0) {
min = j;
}
}
swap(array, min, i);
}
}
public void bubblesort(Comparable[] array) {
for (int poss = array.length; poss > 0; poss--) {
for (int i = 0; i < poss; i++) {
if (array[i].compareTo(array[i + 1]) > 0) {
swap(array, i, i + 1);
}
}
}
}
public static void insertionsort(Comparable[] array) {
for (int i = 1; i < array.length; i++) {
Comparable temp = array[i];
int poss = 0;
while (poss > 0 && array[poss - 1].compareTo(temp) > 0) {
array[poss] = array[poss - 1];
poss--;
}
array[poss] = temp;
}
}
我原本以为所有需要做的就是改变我对组织的反对意见。但这似乎不起作用。
答案 0 :(得分:2)
将array[j].compareTo(array[i]) < 0
更改为array[j].compareTo(array[i]) > 0
。
同样在所有<
次来电中将>
翻到compareTo
(反之亦然)以撤消订单。
答案 1 :(得分:2)
编写比较器函数并使用它而不是<
或>
符号。然后,您可以控制它从比较器中排序的顺序。
您还可以在比较器中有一个参数来决定它的排序方式,然后将其作为用户输入。因此可以从命令行控制它的排序方式。
答案 2 :(得分:0)
创建将返回 -compareTo 结果的compareToReversed方法。 Have a look here for inspiration