我给你说一下冒泡的原理吧:
冒泡冒泡,顾名思义,就是往上走的意思。
冒泡排序是要依靠两层循环,外层控制次数,内层逐个比较。
第一次外层循环将最大(最小)的值放到最上面(数组最后面);
第二次外层循环把第二大(小)的值放到从上往下第2个位置:(数组最后一个)
那么,每一次外层循环,内层的循环只需要循环从1到总长度减外层次数的长度,这就是:
for(int j=0;j
然后实现把最大(最小)的值放到最后面的方法是挨着的两个数依次做判断。这就是:
if(arr[j]
你的这个排序是要把最小的放到最后面,也就是从大到小的排序。
我估计你对边界:j
那个大小比较是说,如果前一个数比后一个小,则交换位置;
假设有n个数(n就是上边程序中的arr.length)
第一次冒泡排序(这时候i=0),最大的数就排在了最后。
所以第二次(这时候i=1)排序的时候就从第一个开始比较到倒数第二个就可以了,
这样,第三次排序只需比较到倒数第三个
第i次比较,只需要比较到(n-i)个,也就是下标为(n-i-1)的数
写几个无序的数字,按照程序一步一步来,你就知道了,而且印象深刻,绝对忘不了!!!