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

为何Java代码中的bubbleSort冒泡排序方法未执行且无法输出排序列表?

解决冒泡排序未执行及输出异常问题

问题根源

  1. 排序方法未被调用:main函数中仅完成了数组生成、最大值查找操作,完全没有调用bubbleSort方法,导致排序逻辑从未执行。
  2. 错误的递归调用:bubbleSort方法内部在元素交换后递归调用了自身,这会引发无限递归(最终栈溢出),且完全违背冒泡排序的迭代实现逻辑。
  3. 数组输出方式错误:直接打印数组对象会输出内存地址(如[D@xxxxxxx),无法展示实际元素内容。

修正后的完整代码

import java.util.Arrays;

public class SortDemo {
    public static void main(String[] args) {
        // 初始化数组
        double[] list = new double[10];
        // 生成1-100的随机整数并转为double类型
        for (int i = 0; i < list.length; i++) {
            list[i] = (int)(Math.random() * 100 + 1);
        }
        System.out.println("未排序列表: " + Arrays.toString(list));

        // 查找最大值
        double max = -1;
        for (int i = 0; i < list.length; i++) {
            if (list[i] > max) max = list[i];
        }
        System.out.println("最大值: " + max);

        // 调用冒泡排序方法
        bubbleSort(list);
        // 输出排序后的结果
        System.out.println("排序后列表: " + Arrays.toString(list));
    }

    public static double[] bubbleSort(double[] list) {
        double temp;
        // 外层循环:控制排序轮次
        for (int i = list.length - 1; i > 0; i--) {
            // 内层循环:比较相邻元素并交换
            for (int j = 0; j < i; j++) {
                if (list[j] > list[j + 1]) {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }
        return list;
    }
}

修正说明

  • 在main函数中添加bubbleSort(list)调用,触发排序逻辑。
  • 删除bubbleSort方法内的递归调用和错误输出语句,回归纯净的迭代式冒泡排序实现。
  • 使用Arrays.toString()格式化数组输出,确保打印的是数组实际元素而非内存地址。
  • 补充import java.util.Arrays;,否则Arrays.toString()会编译报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:40:42