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

如何移除选择排序冗余min变量 精简代码并保证程序正常运行

实现方案

你当前写的是标准选择排序逻辑,min变量的作用是暂存每轮遍历找到的最小值,但实际上你已经通过minPosition记录了最小值对应的数组索引,完全可以直接通过索引访问数组元素获取最小值,不需要额外定义min变量做中转,不会影响排序逻辑的正确性。

具体修改点

  • 移除外层循环内初始化min变量的语句
  • 内层循环做大小比较时,将原逻辑中与min的比较替换为与A[minPosition]的比较
  • 移除内层循环中更新min值的语句,仅保留minPosition的更新逻辑即可
  • 元素交换的逻辑完全不需要改动,和原代码保持一致

修改后可直接运行的完整代码

int[] A = {13, 5, 2, 0, 3, 1, 21, 1, 8};

for (int k = 0; k < A.length - 1; k++) {
    int minPosition = k;
    for (int i = k + 1; i < A.length; i++) {
        if (A[i] < A[minPosition]) {
            minPosition = i;
        }
    }
    int temp = A[k];
    A[k] = A[minPosition];
    A[minPosition] = temp;
}

for (int i = 0; i < A.length; i++) {
    System.out.println(A[i]);
}

逻辑等价性说明

每轮外层循环启动时,minPosition初始值为k,此时A[minPosition]就等于原逻辑中min的初始值A[k];后续遍历到更小元素时只更新最小值索引,A[minPosition]永远对应当前遍历到的最小值,和原逻辑中min存储的值完全一致,排序结果不会有任何偏差,运行后将按升序输出0、1、1、2、3、5、8、13、21。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:01:41