理解冒泡排序

1 篇文章 0 订阅

1.原理

冒泡排序就是将一组打乱的数据,相互进行比较,然后根据大小重新调换位置,直至比较完成所有数据,这里有一个误区,很多人都理解为两个for循环去比较两个相同数组中的数据然后根据大小进行排序,其实它的指针只是一个for循环的数据,那么我们就直接从代码中来解释它的原理。

2.代码实现

const arr = [5, 4, 12, 18, 10, 30, 25];

const bubbleSort = (arr) => {
    let num;
    for (let i = 0; i < arr.length - 1; i++) {
        for (j = 0; j < arr.length - 1 - i; j++) {         
            if (arr[j] > arr[j+1]) {
                num = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = num;
            }
        }
    }
    return arr
}

console.log(bubbleSort(arr));

3.代码解析

一个for循环的作用实则是限制的循环比较的次数,arr.length - 1在这里也就是会执行比较6轮,

为什么是6轮,我们往下看,第二个for循环就来实现比较以及换位的操作:

第一轮开始,此时i等于0,那么j的取值最大就是arr.length - 2,就是数组的倒数第二位,j + 1就是倒数第一位,就等于说是j从0开始一直会比较到,倒数第二位和倒数第一位,那么最大的数肯定已经排在了这组数据的最后了;

那么到第二轮开始,i变成了1,这就意味着,j取值就小了以为,换句话说就是j从0开始比较到倒数第三个数和倒数第二个数,为什么这样呢,因为最大的数已经在最后了,所以每进行一轮比较,就会向前推一位;

那么按照这个原理,到最后i为arr.length - 2, 那怎么j从0开始到arr.length -1 - arr.length + 2 = 1,比较完成最后两个数,整个数据的排序已经完成。

那么现在我们在来理解6轮:第一轮j从0开始比较到最后一位,到最后一轮从0比较到第一位,那么第一位到最后一位(下标),就是一共6个元素,也可以理解为j一共可以为是那些元素:就是除了最后一个都可以,所以一共就是6轮。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值