为何Java代码中的bubbleSort冒泡排序方法未执行且无法输出排序列表?
解决冒泡排序未执行及输出异常问题
问题根源
- 排序方法未被调用:main函数中仅完成了数组生成、最大值查找操作,完全没有调用
bubbleSort方法,导致排序逻辑从未执行。 - 错误的递归调用:
bubbleSort方法内部在元素交换后递归调用了自身,这会引发无限递归(最终栈溢出),且完全违背冒泡排序的迭代实现逻辑。 - 数组输出方式错误:直接打印数组对象会输出内存地址(如
[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
相关产品推荐
相关产品推荐

