通过实例解析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 相关文章推荐
js禁止回车提交表单的示例代码
Dec 23 Javascript
javascript白色简洁计算器
May 04 Javascript
Bootstrap每天必学之面板
Nov 30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
Jun 28 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
JS脚本实现定时到网站上签到/签退功能
Apr 22 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中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
Javascript之文件操作
2007/03/07 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
基于树莓派的语音对话机器人
2019/06/17 Python
python调用webservice接口的实现
2019/07/12 Python
Python 获取项目根路径的代码
2019/09/27 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
护理专业的自荐信
2013/10/22 职场文书
应聘美工求职信
2013/11/07 职场文书
廉政教育心得体会
2014/01/01 职场文书
通信研究生自荐信
2014/02/01 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
庆国庆活动总结
2014/08/28 职场文书
2014年店长工作总结
2014/11/17 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript