JS经典算法之冒泡排序算法

来源:互联网 发布:spring mybatis打印sql 编辑:程序博客网 时间:2024/05/16 11:41
冒泡排序算法的运作如下:(从后往前)
  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较


示例:
      冒泡排序的原理是这样的,比方说有五个数字54321,要按从小到大排列;      首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成                                       45321,然后比较第二个和第三个,交换位置,变成43521,然后第三个和第四个,第四个和第五个,这样一次循环下来,变成43215      所以,一层循环的效果就是挑出最大的一个数字5,冒泡到最后面。但是还要挑出第二大,第三大的数字,等等。所以一层循环根本就不够用,必须再套一层才行。像这个例子,五个数字,起码要进行四轮循环才行。至于为什么要this.length-i,是因为第一次比较五个数字,第二个只要比较前四个就行了,第五个肯定是最大的了。。var array = [5, 4, 3, 2, 1];var temp = 0;for (var i = 0; i < array.length; i++){for (var j = 0; j < array.length - i; j++){if (array[j] > array[j + 1]){temp = array[j + 1];array[j + 1] = array[j];array[j] = temp;}}}console.log(array);

0 0
原创粉丝点击