冒泡排序原理详解---------逆战班学生心得分享

首先呢,我们先来了解一下冒泡排序是干嘛用的:
冒泡排序是用来对数组进行排序的,,实际项目中我们很少用到这种方法,但是我们要清楚这里面的原理,它对我们对JavaScript的加深学习很有帮助。
我们先讲一下冒泡排序,这里有一张动图大家先看一下:
在这里插入图片描述
如图所示,这是我们冒泡排序的原理动图,大家可以看出,这是一个混乱排序的数组,冒泡排序就是从索引下标为0的数值开始,向后比较,如果后一个元素比它小,那么他就与其进行交换,也就是索引下标进行交换。
从图中说把,第一个数值是9,第一步就是5跟它后面的5比较,发现5比他小,就与其交换了位置,也就是索引下标,这个时候我们的9索引下标就变成了1,然后它再跟索引下标为2的数值进行比较,这里是6,发现6也比它小,就再次交换位置再进行比较。依次往后,直到找到那个比它大的数值,就 不进行交换,然后它后面的那个数值接替它进行比较。
这个只是初始的第一数值的比较,它比较完之后,我们新的第一个数值,也就是我们的5,再执行刚才它的操作,依次往后比较。
就这样,直到所有的索引下标比较完了之后,数组的排列也就完成了。
那么,它是如何通过代码实现的呢? 我们来看一下:
第一步:我们先写一个排序混乱的数组:
在这里插入图片描述
我们要让他们里面的单元进行比较,那就要生成所有的索引下标,通过索引下标的定位让它们进行比较,
第二步: 写一个for循环来生成所有的索引下标。
在这里插入图片描述
这个for循环的目的就是生成所有的索引下标,这里我们不用管这个 -j 后面会说,先当它不存在。
在这里插入图片描述
这个代码的意思就是索引的总个数,length就是数组的最后一位之后的结尾,也就是说,你数组里有四个单元,length就是5 .
生成了所有的索引之后我们要进行一一比较,所以我们的第三步就是要写一个程序让他们进行比较,比较完之后根据比较结果进行交换。
在这里插入图片描述
我们的i是从0开始的,所以这里if里面的内容就是比较i和i+1索引所对应的数值内容,如果if 为true,就执行程序,程序内容就是把两个索引下标多对应的数值进行交换。
这里是一个循环,也就是我们初始的那个索引下标往后比较,一直比较出最大的那个数值排在最后,这个循环就结束了,
那么我们的第四步就是要生成对应索引多少对应的循环次数,这里就给上面的for循环加一个外层循环来让它进行所有的比较。
在这里插入图片描述
这个是对应的索引下标个数的循环次数,跟刚才那个内部循环很像,这里我顺便解释一下刚才那个-j ,为什么要-j 呢,这里可以看的出我们的j就是从0- length-2。所以那里的内部循环的-j 就是第一次循环 -0 ,第二次 -1 ,为什么呢,大家想一下,我们第一次循环过后,会比较出来最大的数值排在最后,这是什么意思呢,意思就是这个数值不用再参与循环了,所以我们的循环比较次数就会少一次。所以下一次循环就 - 1.
第五步:我们就写上输出代码,执行输出,这里先给大家看一下完整的代码:
在这里插入图片描述
这里看一下输出结果;
在这里插入图片描述
可以看到,我们的数值已经被从大到小排列好了,这就是冒泡排序,对原理不清楚的朋友可以敲一下这个代码,敲一遍就懂了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值