【问题标题】:How to "reverse" selection sorting?如何“反转”选择排序?
【发布时间】:2013-05-16 01:19:21
【问题描述】:

所以在这里我有一个选择排序来将值从最低到最高排序,我将如何更改它以便它将值从最高到最低排序?

int min;
for (int i = 0; i < array.length; i++) {
    // Assume first element is min
    min = i;
    for (int j = i + 1; j < array.length; j++) {
         if (array[j] < array[min]) {
              min = j;
         }
    }

    if (min != i) {
       final int temp = array[i];
       array[i] = array[min];
       array[min] = temp;
    }
itsATextArea.append(array[i] + "\n");
}

【问题讨论】:

标签: java arrays sorting loops selection


【解决方案1】:

你只需要更改代码中的符号

if (array[j] > array[max])
{
    //assign it here
    max = j;
}

以下是修改后代码的样子。

int max;
for (int i = 0; i < array.Length; i++)
{
    // Assume first element is max
    max = i;
    for (int j = i + 1; j < array.Length; j++)
    {
        if (array[j] > array[max])
        {
            max = j;
        }
    }

    if (max != i)
    {
       int temp = array[i];
       array[i] = array[max];
       array[max] = temp;
    }
}

【讨论】:

    【解决方案2】:

    怎么样:

    java.util.Arrays.sort(array);
    java.util.Arrays.reverse(array);
    

    【讨论】:

    • 或者,如果您将适当的比较器函数与sort() 一起使用,则无需在之后反转数组。例如,请参阅here
    猜你喜欢
    • 2015-12-14
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2022-11-11
    相关资源
    最近更新 更多