如何编写实现降序排列的selectionSort选择排序方法?
Java选择排序实现降序的修改方案
- 你的现有代码存在两个核心问题:一是判断逻辑还是找最小值的升序逻辑,二是缺少找到目标下标后的元素交换步骤,按下方调整即可,全程使用数组原生
.length属性不会出现溢出问题:
- 将原寻找最小值的逻辑修改为寻找未排序区间的最大值,对应调整判断条件
- 补全最大值与当前未排序区间首元素的交换逻辑
- 循环边界保持原有
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
相关产品推荐
相关产品推荐

