码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序

时间:2016-04-16 13:43:37      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

  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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!