JavaScript 冒泡排序

冒泡排序

1. 什么是冒泡排序?

  • 计算机语言基础算法的一种。
  • 把数组里面的数字按照规律排好序。

2. 算法描述:

  • 比较相邻的两个数,如果第一个数比第二个数大,则两数交换位置 ;

  • 对之后的相邻元素进行同样的工作,从开始到最后一对,这样进行一次排序后,数据的最后一位会是最大值 ,第一次循环进行的次数为 arr.length-1 ;

  • 之后对所有的元素重复以上的步骤,且以后每次循环的次数为arr.length-1-i (i为循环第几次 ,i 从零开始);

  • 重复上述步骤,直到排序完成。

3. 代码实现:

冒泡排序的核心:

  • 比较相邻的两个数,如果第一个数比第二个数大,则两数交换位置

冒泡排序的口诀:

  • 两个for循环,一个减一次,里面减外面变量
 	var arr = [1, 9, 6, 4, 5, 8, 3, 2, 7]  //  准备一个乱序的数组
    for (var i = 0; i < arr.length - 1; i++) { //  因为数组索引是从 0 开始的,所以外循环判断条件是 i < arr.length-1
      for (var k = 0; k < arr.length - 1 - i; k++) {
        if (arr[k] > arr[k + 1]) {
          var tmp = arr[k]     //把 arr 索引 k 位置的数据赋值给 tmp 变量
          arr[k] = arr[k + 1]   // 把 arr 索引 k+1 位置的数据赋值给 arr 索引 k 位置
          arr[k + 1] = tmp    // 把 tmp 保存的值赋值给 arr 索引 k+1 的位置
        }
      }
    }
    /*
    代码说明:
        + 当 i=0 时, 
            内循环执行以后,把最大的数字放在了最后一个, arr = [5, 6, 8, 2, 7, 3, 4, 1, 9]
            这时内循环的判断条件:k < arr.length - 1 - 0 
        + 当 i=1时, 
            内循环执行以后,把最大的数字放在了最后一个,倒数第二大放在了倒数第二的位置,arr = [5, 6, 2, 7, 3, 4, 1, 8, 9]
            这时循环出来的最大数只需和最后一位比较,所以内循环的判断条件:k < arr.length - 1 - 1 
        + 当 i=2 时,
            内循环执行以后,倒数第三大放在了倒数第三的位置,arr = [5, 6, 2, 3, 4, 1, 7, 8, 9]
            这时这时循环出来的最大数只需和倒数第二位比较,内循环的判断条件:k < arr.length - 1 - 2
        + ......
        + 因此内循环的判断条件写成: k < arr.length - 1 - i  
    */ 

可以根据下面动图理解上述代码
冒泡排序

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值