前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JS】237-如何理解JavaScript中常用的4种排序算法?

【JS】237-如何理解JavaScript中常用的4种排序算法?

作者头像
pingan8787
发布2019-07-25 12:31:30
4600
发布2019-07-25 12:31:30
举报
文章被收录于专栏:前端自习课前端自习课

算法介绍:

  • 比较相邻的两个元素,如果前一个比后一个大,则交换位置。
  • 第一轮把最大的元素放到了最后面。
  • 由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素不用比较。

冒泡算法改进:

设置一个标志,如果这一趟发生了交换,则为true。否则为false。如果这一趟没有发生交换,则说明排序已经完成。代码如下:

假如数组长度是20,如果只有前十位是无序排列的,后十位是有序且都大于前十位,所以第一趟遍历排序的时候发生交换的位置必定小于10,且该位置之后的必定有序,我们只需要排序好该位置之前的就可以,因此我们要来标记这个位置就可以了,即可以记录每次扫描中最后一次交换的位置,下次扫描的时候只要扫描到上次的最后交换位置就行了,因为后面的都是已经排好序的,无需再比较,代码如下:

每一次循环从两头出发算出最大和最小值,代码如下:

在代码3的基础上记录每次扫描最后一次交换的位置,下次扫描的时候只要扫描到上次的最后交换位置就行,同代码2,代码如下:

快速排序

算法介绍:

快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。然后递归调用,在两边都实行快速排序。

快速排序动图演示:

选择排序

算法介绍:

选择排序就是从一个未知数据空间里,选取之最放到一个新的空间

插入排序

算法介绍:

  • 从第一个默认被排好序的元素开始
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描
  • 如果已排序的元素大于取出的元素,则将其分别向后移动一位
  • 直到找到已排序的元素中小于或等于取出的元素,将取出的元素放到它的后一位
  • 重复步骤2

插入排序算法改进-二分法插入排序:

以上就是4中比较基础的排序方法了,JavaScript的排序算法还有很多,这是我们4种最常见也是最基本的算法,掌握理解好,在面试和开发中也能从容应对了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端自习课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档