JavaScript实现排序算法(1)——冒泡排序

冒泡排序

冒泡排序的核心思路,就是每一轮都把最大的数"冒"到数组顶部.

1 算法过程
(从小到大排序)
1. 每一轮排序,都从第一个数开始,比较相邻的数;
2. 如果第一个数比第二个数大,则交换两个数的位置;
3. 如果第一个数不大于第二个数,则不交换位置,开始比较第二个数和第三个数;
4. 以此类推,直到比完最后两个数,选出数列最大值置于末尾;
5. 待排数列更新为原数列减去末尾值,开始下一轮排序,重复上面的步骤;
2 排序演示

对下面的数列进行冒泡排序:

3, 4, 1, 5, 2

第一轮排序开始,从第一个数3开始,比较相邻的数4

3, 4, 1, 5, 2
↑  ↑

3不大于4,不交换位置,开始比较第二个数4和第三个数1

3, 4, 1, 5, 2
   ↑  ↑

4大于1,交换位置,开始比较第三个数4和第四个数5

3, 1, 4, 5, 2
      ↑  ↑

4不大于5,不交换位置,开始比较第四个数5和最后一个数2

3, 1, 4, 5, 2
         ↑  ↑

5大于2,交换位置,此时5已到达数列末尾,第一轮排序结束,排序结果为:

3, 1, 4, 2, 5

第二轮排序开始,待排数列为

3, 1, 4, 2

(5已经确认为上一轮排序数列的最大值,不参与第二轮排序)

从第一个数3开始,比较相邻的数1

3, 1, 4, 2
↑  ↑

3大于1,交换位置,比较第二个数3和第三个数4

1, 3, 4, 2
   ↑  ↑

3不大于4,不交换位置,比较第三个数4和最后一个数2

1, 3, 4, 2
      ↑  ↑

4大于2,交换位置,此时4已到达数列末尾,第二轮排序结束,排序结果为

1, 3, 2, 4

第三轮排序开始,待排数列为

1, 3, 2

从第一个数1开始,比较相邻的数3

1, 3, 2
↑  ↑

1不大于3,不交换位置,比较第二个数3和最后一个数2

3大于2,交换位置,此时3已到达数列末尾,第三轮排序结束,排序结果为

1, 2, 3

第四轮排序开始,待排数列为

1,2

从第一个数1开始,比较最后一个数2

1, 2
↑  ↑

1不大于2,不交换位置,此时2已是数列末尾,第四轮排序结束,排序结果为

1, 2

第五轮排序,待排数列只剩一个数1,排序结束,得到有序数组

1, 2, 3, 4,
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值