修改排序方法以按降序排序

时间:2014-08-05 18:13:41

标签: java sorting loops for-loop

我的问题是,如果我想更改我的排序方法,以降序排序必须完成的工作? (学习决赛)

我的方法如下

    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;
    }
}

我原本以为所有需要做的就是改变我对组织的反对意见。但这似乎不起作用。

3 个答案:

答案 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