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

冒泡算法精简理解

时间:2019-05-21 21:12:15      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:...   位置   数组   交换   经典的   一个   思路   rip   最简   

组长安排的工作做完了,闲得蛋疼。重新理解下最经典的冒泡算法。

原理:比较相邻的两个数,如果第一个数比后一个要大,则交换位置。

其实原理很好理解了,一看就是写个循环。但是要交换几次呢。我们就拿最简单的排序来推理一下。

假设数组是正序的1~9,我们手动排序的话需要交换0次。这是最少的交换次数。

如果数组是倒序9~1,我们需要一个一个的,9和8交换,9和7交换。。。。9和1交换,9到了最后一位,到达了他最终到达的位置,交换了8次。

然后是8,8和7交换,8和6交换。。。。8和1交换,到达了倒数第二位,这个数字也到达了他最终到达的位置,交换了7次。

。。。。。。

然后是2,2和1交换,交换了1次。

结束。

到了这里,我们定睛一看,感觉推理出来了。排了8次序,每次交换的次数是逐一递减的。

交换次数 = (n-1)+(n-2)+(n-3)+......+(n-(n-1))+0;

数学不好,不会推导,按照过程写出来就行了。

按照javascrip写下思路

function mp(arr){    //arr为需要排序的数组
  var length = arr.length;
  for(var i = 0;i < length - 1;i++){    //外循环为次数,需要循环n-1次
    for(var j = 0; j < length - 1 - i;j++){  //内循环为交换的次数 次数为 n-1-已经循环的次数
      if(arr[j] > arr[j+1]){      //如果前者比后者大,交换位置
        var a = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = a;
      }
    }
  }
  return arr;
}

 

冒泡算法精简理解

标签:...   位置   数组   交换   经典的   一个   思路   rip   最简   

原文地址:https://www.cnblogs.com/bpjj/p/10902190.html

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