冒泡排序和选择排序

这是在逆战班学习JS的第二周,这周我们学习了两个重要的排序,一个为冒泡排序,另一个为选择排序,这两个排序都是将数组中的数值从小到大进行排序,但是它们两个的排序原理是完全不同的:冒泡排序的原理是:将相邻的两个单元储存的数值进行比较,如果第一个单元的数据较大,就将这两个相邻单元储存的数值进行交换。选择排序的原理是:从第一个数组单元储存的数值开始向它后面的每一个单元储存的数值比较,如果第一个数组单元储存的数值大于后面某一个单元储存的数值,就将后面的这个数值的索引下标记住,然后用它继续往后比较,直到比完第一轮,最后如果最小的这个数值对应的索引下标不是当前轮开始的第一个开始数值的索引下标,那么将他们两个数值交换,这样就将最小的数值排在了第一位。

综上:冒泡排序是每一轮比较都会将一个最大数排在最后,直到整个数组排序完成;选择排序是每一轮比较出一个最小的数排在刚开始的位置,直到整个数组排序完成。

下面分别介绍下两种排序的代码:

冒泡排序:在这里插入图片描述
对冒泡排序做一个分步解释:
在这里插入图片描述

选择排序:

在这里插入图片描述

对选择排序做一个分步解释:

在这里插入图片描述

通过对两个排序的代码,我们做一个总结:

冒泡排序:

核心:相邻两个单元,比较数值的大小,如果触发条件,那么它们两个
就交换储存数值。

优化:

外层优化:n个单元,只循环n-1次,最后只剩下最后一个单元 是不用比较。

内层优化1:每一轮比较出的最大值,不用参与下一次的比较。

内层优化2:只循环至倒数第二个单元,通过i+1与最后一个单元比较。

选择排序:

核心:从起始位置开始,与之后的单元比较,如果触发条件,储存这个 单元的索引下标,当循环结束后,如果索引下标不是起始位置的下标,则交换储存的数值。

优化:

外层优化:n个单元,只循环n-1次,剩下最后一个单元时,不用循环。

内层优化:之前比较出的最小值,不用参与下一次的比较。

这两种排序方式的功能虽然相同,但是选择排序的执行效率要比冒泡排序的效率高,因为选择排序只是储存下标,最后执行一次数据交换;冒泡排序的话每一次循环它都会做一次数据交换,所以就效率会比选择排序低。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值