楼上说的都对,但是想来楼主可能还没大搞懂冒泡是什么意思。
不知见过鱼吐泡泡没有,泡泡从下往上一点一点的飘到最上面。这算法是每次从最下面的记录开始,对每两个相邻的数据进行比较然后交换,进行下一次的排序。
for(int i = 0; i < arr.length; i++)
for(int j = i; j < arr.length-1; j++)
你的程序原先是这样,我直接用数组下标来表示 ,先是0和1,1和2,2和3,3和4.......一趟比较完后,数组元素变为3,2,5,6,9,10,11,12
第二趟,i值变为1,比较元素下标为1和2,2和3,3和4....... 这时你会发现,每个前边的元素都比后边要小,因为数组下标是从1开始的,所以不会发生替换,
第三趟,i值变为2,维持上述结果不变....直至循环结束.......
说到这里,不知楼主对于程序了解了不,冒泡的比较有点类似于找最值,每一次排序完成,要找到一个最大值或者最小值,放在数组的最前边,当然也可以是最后边,看你程序怎么写了,所以,内部循环j的值得从0开始 |