通过实例解析JavaScript常用排序算法


Posted in Javascript onSeptember 02, 2020

冒泡排序

冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习。

算法介绍:

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

通过实例解析JavaScript常用排序算法

冒泡算法改进:

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

通过实例解析JavaScript常用排序算法

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

通过实例解析JavaScript常用排序算法

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

通过实例解析JavaScript常用排序算法

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

通过实例解析JavaScript常用排序算法

冒泡排序动图演示:

通过实例解析JavaScript常用排序算法

快速排序

算法介绍:

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

通过实例解析JavaScript常用排序算法

快速排序动图演示:

通过实例解析JavaScript常用排序算法

选择排序

算法介绍:

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

通过实例解析JavaScript常用排序算法

选择排序动图演示:

通过实例解析JavaScript常用排序算法

插入排序

算法介绍:

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

通过实例解析JavaScript常用排序算法

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

通过实例解析JavaScript常用排序算法

插入排序法动图演示:

通过实例解析JavaScript常用排序算法

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 检测浏览器和操作系统的脚本
Dec 26 Javascript
JavaScript 三种创建对象的方法
Oct 16 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
JS弹出窗口代码大全(详细整理)
Dec 21 Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
NestJs 静态目录配置详解
Mar 12 Javascript
node后端服务保活的实现
Nov 10 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 Javascript
手把手教你实现 Promise的使用方法
Sep 02 #Javascript
如何基于jQuery实现五角星评分
Sep 02 #jQuery
在vscode 中设置 vue模板内容的方法
Sep 02 #Javascript
JavaScript array常用方法代码实例详解
Sep 02 #Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 #Javascript
详解JavaScript 事件流
Sep 02 #Javascript
JavaScript判断数据类型有几种方法及区别介绍
Sep 02 #Javascript
You might like
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php 注释规范
2012/03/29 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
用Python解决计数原理问题的方法
2016/08/04 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
基于python实现复制文件并重命名
2020/09/16 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
农村婚礼证婚词
2014/01/10 职场文书
个人租房协议书范本
2014/09/30 职场文书
2014年保洁工作总结
2014/11/24 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python