You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写实现降序排列的selectionSort选择排序方法?

Java选择排序实现降序的修改方案
  • 你的现有代码存在两个核心问题:一是判断逻辑还是找最小值的升序逻辑,二是缺少找到目标下标后的元素交换步骤,按下方调整即可,全程使用数组原生.length属性不会出现溢出问题:
  1. 将原寻找最小值的逻辑修改为寻找未排序区间的最大值,对应调整判断条件
  2. 补全最大值与当前未排序区间首元素的交换逻辑
  3. 循环边界保持原有arr.length的写法即可,无需修改

修改后完整代码如下:

int[] arr = {5, 3, 2, 44, 1, 75, 23, 15};

private static void descendingSort (int[] arr) {
    // 外层循环控制已排序区间的末尾位置
    for (int i = 0; i < arr.length - 1; i++) {
        // 记录当前未排序区间最大值的下标,初始默认是区间首个元素
        int maxIndex = i;
        // 内层循环遍历未排序区间找最大值下标
        for (int j = i + 1; j < arr.length; j++) {
            // 如果当前元素比记录的最大值更大,更新最大值下标
            if (arr[j] > arr[maxIndex]) { 
                maxIndex = j;
            }
        }
        // 找到最大值后,和未排序区间的第一个元素交换
        int temp = arr[i];
        arr[i] = arr[maxIndex];
        arr[maxIndex] = temp;
    }
}
  • 测试验证:调用方法后上述测试数组输出结果为[75, 44, 23, 15, 5, 3, 2, 1],符合降序要求。

内容的提问来源于stack exchange,提问作者Stein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:45:05