标签:
0 1 2 3 4 5
假设有一个6个数的数组,0,1,2,3,4,5是索引,冒泡排序就是相邻两个对比,比如0和1比,如果满足条件就互换位置,然后1和2比,2和3比,3和4比,4和5比。第一趟循环下来,把最大或最小的数放到5,第二趟循环,把0-4中最大或最小的数放到4。。。
冒泡排序有两层循环,外层循环控制需要几趟循环,1趟循环可以将最大或最小的数放到5的位置,第2次循环可以将次最大或次最小的数放到4的位置,以此类推,需要length-1趟循环。所以外层为for(var i=0;i<length-1;i++)
再看里层循环,对比时会用到a[j]和a[j+1]对比,那么第一趟循环中,j+1最大的位置为5(i=0);第二趟循环中j+1最大的位置为4(i=1);所以在第i趟循环中,j+1的位置为length-1-i;那么j的位置为length-2-i;因此里层循环为for(var j=0;j<length-i-1;j++)
所以冒泡排序法为
for(var i=0;i<length-1;i++){
for(var j=0;j<length-i-1;j++){
if(a[j]>a[j+1]){互换位置}//升序 降序为if(a[j]<a[j+1])
}
}
标签:
原文地址:http://www.cnblogs.com/YangqinCao/p/5398077.html