首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript数组-冒泡排序

冒泡排序

这节我们来讲大名鼎鼎的冒泡排序

原理:前后两个数两两进行比较,如果符合交换条件,交换位置,知道所有数据排序完成,结束比较。

举个小例子:

我们来给9,8,7,6,5,4,排序为4,5,6,7,8,9

排序比较的过程:

第一轮:

接着进行第二轮的排序比较:

(9在最大位置上,所以在接下来的几轮里不跟着参与)

再进行第三轮的排序比较

(这一轮的8在最大位置,以后也不再参与)

以此类推…

经过上面的每一轮比较,我们发现每一轮都取到一个最大的数放在最后

拿我们的第一轮9为例,因为我们比较的方式是两两进行比较的,所以这个9就像一个泡泡一样一层一层往上冒。所以我们把上面的过程称为冒泡排序

上面我们执行了5轮,这只是我们的分析过程,真正的执行过程还要通过循环

分析:

1.先定义一个外层循环i为总共循环了几轮;i < arr.length

2.再定义每一轮比较的次数j,j是总的元素个数– 当前的元素,第一轮是6-1,第二轮6-2…等等,由于i是从0开始,所以我们要再减1;j < arr.length– i - 1

3.判断前后两个数是否复合交换条件;arr[i] > arr[j + 1]

4.如果符合条件就交换位置;tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp;

运行结果如下

这里主要i和j主要难理解,需要花点时间自己去理解

必须要知道i和j的作用到底是干什么的

i=0时,j

i=1时,j

以此类‍‍‍‍‍‍‍‍‍‍‍‍类推……

这是从小到大进行排列,如果从大到小排列将数组的大于号改为小于号即可

- End -

---web分享,分享的不只是web

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201228A0JJ2F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券