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

Java数组升序排序算法异常排查:自定义代码输出错误求助

问题排查与修正:你的自定义排序算法逻辑错误解析

咱们一步步拆解你的排序代码里的问题,以及如何修正:

核心问题分析

你的代码存在三个关键逻辑错误,导致arrSort无法得到正确的升序结果:

  1. 仅执行了一轮相邻元素比较,未完成完整排序
    排序算法(比如常见的冒泡排序)需要多轮遍历数组,每一轮把当前未排序部分的最大值“推”到末尾,直到整个数组有序。而你的代码只跑了一轮遍历,仅仅处理了相邻元素的单次交换,根本没完成全数组排序。

  2. arrSort的赋值逻辑完全错误
    你只是在每次相邻比较后,把当前i位置的元素(或交换后的小值)零散赋值给arrSort[i],这并没有构建出完整的排序数组。而且arrSort的最后一个元素(索引5)从未被赋值,int类型数组的默认初始值是0,这就是输出末尾出现0的原因。

  3. 修改原数组但未利用排序后的结果
    你在if分支里交换了原数组arr的相邻元素,但之后并没有把排序后的整个arr复制到arrSort,而是零散赋值,导致arrSort完全不是排序后的结果。

原代码执行过程验证(为什么输出是[33,22,11,22,11,0])

咱们走一遍原代码的执行流程:

  • 初始arr:[33,44,22,11,22,11]
  • i=0:33 < 44,直接赋值arrSort[0] = 33
  • i=1:44 > 22,交换后arr变为[33,22,44,11,22,11],赋值arrSort[1] = 22
  • i=2:44 > 11,交换后arr变为[33,22,11,44,22,11],赋值arrSort[2] = 11
  • i=3:44 > 22,交换后arr变为[33,22,11,22,44,11],赋值arrSort[3] = 22
  • i=4:44 > 11,交换后arr变为[33,22,11,22,11,44],赋值arrSort[4] = 11
  • arrSort[5]未被赋值,默认是0,最终输出[33,22,11,22,11,0]

修正后的代码(以冒泡排序为例)

下面是实现正确升序排序的代码,保留你想自定义排序的需求,同时修复逻辑错误:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {33,44,22,11,22,11};
        // 先复制原数组到arrSort,避免修改原数组
        int[] arrSort = Arrays.copyOf(arr, arr.length);
        int temp;

        // 冒泡排序核心逻辑:多轮遍历
        // 外层循环控制排序轮次,每轮确定一个最大值的位置
        for (int i = 0; i < arrSort.length - 1; i++) {
            // 内层循环遍历未排序部分,比较交换相邻元素
            // 每轮遍历长度递减i,因为末尾i个元素已经是有序的最大值
            for (int j = 0; j < arrSort.length - 1 - i; j++) {
                if (arrSort[j] > arrSort[j + 1]) {
                    // 交换相邻元素
                    temp = arrSort[j];
                    arrSort[j] = arrSort[j + 1];
                    arrSort[j + 1] = temp;
                }
            }
        }

        System.out.println(Arrays.toString(arrSort)); // 输出:[11, 11, 22, 22, 33, 44]
    }
}

代码说明

  • 使用Arrays.copyOf复制原数组到arrSort,避免修改原始输入数组。
  • 外层循环控制排序轮次,每一轮都会将当前未排序部分的最大值移动到末尾。
  • 内层循环负责相邻元素的比较与交换,每轮遍历的长度会随着已排序元素的增加而缩短,提升效率。

内容的提问来源于stack exchange,提问作者John R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:44:30