不使用函数实现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
相关产品推荐
相关产品推荐

