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

Java Selection Sort选择排序实现10整数升序首元素排序错误如何修复

选择排序代码修复方案

核心问题原因

  • 内层循环j从1开始遍历,永远不会和索引为0的第一个元素做比较,直接导致第一个元素无法参与排序
  • 比较逻辑写反:array[i] < array[j]就交换的逻辑是实现降序,不符合你需要的升序要求
  • 逻辑结构问题:边输入边排序时数组还未填充完成,剩余的默认0值会干扰排序结果,且不符合选择排序的标准实现逻辑

修复后完整代码

import java.util.Scanner;

public class SelectionSort {
    public static void sort(int[] array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入10个整数:");
        // 先完成所有输入
        for (int i = 0; i < array.length; i++) {
            System.out.print((i+1) + ": ");
            array[i] = sc.nextInt();
        }
        // 标准选择排序实现升序
        for (int i = 0; i < array.length - 1; i++) {
            // 记录最小值下标
            int minIndex = i;
            // 遍历未排序区间找最小值
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[minIndex]) {
                    minIndex = j;
                }
            }
            // 交换最小值到已排序区间末尾
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
        // 输出排序结果
        System.out.println("升序排序结果:");
        for (int a = 0; a < array.length; a++) {
            System.out.print(array[a] + " ");
        }
        sc.close();
    }

    public static void main(String[] args) {
        int[] my_array = new int[10];
        sort(my_array);
    }
}

修复说明

  • 先接收完所有输入再执行排序,避免未填充的默认值干扰排序
  • 内层循环从i+1开始遍历未排序区间,所有元素都能参与比较
  • 按照标准选择排序逻辑实现,每轮先找最小值下标再交换,效率更高且逻辑清晰
  • 比较逻辑改为判断array[j] < array[minIndex],实现升序排序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:15:03