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

不使用函数实现Java冒泡排序:我的代码存在什么问题?

你的冒泡排序代码中的错误分析

下面是代码里存在的几个问题:

  • 交换逻辑错误:在交换a[j]和a[j+1]时,你先把a[j+1]赋值给temp,接着又把a[j+1]赋值给a[j],这会导致原来的a[j]的值丢失,无法完成正确的交换。正确的交换逻辑应该是先把a[j]存到temp中:

    int temp = a[j];
    a[j] = a[j+1];
    a[j+1] = temp;
    
  • 输出时机错误:你在每轮外层循环结束后打印a[i],这并不是正确的排序结果输出方式。冒泡排序每轮外层循环会把当前未排序部分的最大元素“沉”到末尾,此时a[i]并不一定是最终排序后的正确值。应该在整个排序完成后,遍历整个数组输出所有元素。

  • 多余的闭合大括号:代码最后多了一个},这个额外的括号会导致编译报错,因为main方法的大括号已经正确闭合了,需要删除这个多余的括号。

修复后的完整代码示例:

public static void main(String[] args) {
    int [] a={98,87,42,12,42,63,56,11};
    for(int i=0;i<a.length-1;i++){
        for(int j=0;j<a.length-i-1;j++){
            if(a[j]>a[j+1]){
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    // 排序完成后输出整个数组
    for(int num : a){
        System.out.println(num);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:15:43