脚本宝典收集整理的这篇文章主要介绍了

简明算法: 冒泡排序(javascript描述)

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

懒惰了很久,人有点生锈,所以写个算法系列让自己脑筋活跃起来。

(所有范例一律从小到大排序)

冒泡排序

给定数组

var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];

算法描述:

  1. 将第一个元素与第二个元素对比,此时第一个元素比第二个元素大,交换他们,这样较大的元素就位于第二个位置了;

    list = [ 26, 54, 93, 17, 77, 31, 44, 88, 55, 20 ];
  2. 将第二个元素与第三个元素对比,此时第二个元素比第三个元素小,保持原样不变;

    list = [ 26, 54, 93, 17, 77, 31, 44, 88, 55, 20 ];
  3. 重复上面的步骤,直到最后我们用倒数第二个元素与倒数第一个元素相比之后,经过第一轮排序,最大的元素93被移动到了数组最后;

    list = [ 26, 54, 17, 77, 31, 44, 88, 55, 20, 93 ];
  4. 然后我们重复1,2,3步骤;经过第二轮我们会找到次大的元素排在倒数第二位,即88被移动到了数组倒数第二位;

    list = [ 26, 17, 54, 31, 44, 77, 55, 20, 88, 93 ];
  5. 再次重复直到整个数组有序;

    第1轮: [ 26, 54, 17, 77, 31, 44, 88, 55, 20, 93 ]
    第2轮: [ 26, 17, 54, 31, 44, 77, 55, 20, 88, 93 ]
    第3轮: [ 17, 26, 31, 44, 54, 55, 20, 77, 88, 93 ]
    第4轮: [ 17, 26, 31, 44, 54, 20, 55, 77, 88, 93 ]
    第5轮: [ 17, 26, 31, 44, 20, 54, 55, 77, 88, 93 ]
    第6轮: [ 17, 26, 31, 20, 44, 54, 55, 77, 88, 93 ]
    第7轮: [ 17, 26, 20, 31, 44, 54, 55, 77, 88, 93 ]
    第8轮: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]
    第9轮: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

算法实现:

function bubble(list) {
  // 开启length-1轮循环,因为最后一轮只剩一个元素,没必要比较
  for (let i = 0; i < list.length - 1; i++) {
    // 两两对比,每次循环时j的取值上限需要舍去尾部已经有序的数据,所以length-1-i
    for (let j = 0; j < list.length - 1 - i; j++) {
      if (list[j] > list[j + 1]) {
        // ES6语法 交换元素
        [list[j], list[j + 1]] = [list[j + 1], list[j]];
      }
    }
  }
}

// 测试
var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];
bubble(list);
console.log(list);
// [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

总结

以上是脚本宝典为你收集整理的

简明算法: 冒泡排序(javascript描述)

全部内容,希望文章能够帮你解决

简明算法: 冒泡排序(javascript描述)

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过