通过实例解析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 滚轮事件使用说明
Mar 07 Javascript
JS面向对象编程之对象使用分析
Aug 19 Javascript
javascript 隔行换色函数代码
Oct 24 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
JS实现图片切换特效
Dec 23 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
用jscript实现新建word文档
2007/06/15 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python range与enumerate函数区别解析
2020/02/28 Python
python绘制高斯曲线
2021/02/19 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
中文系师范生自荐信
2013/10/01 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
车间质检员岗位职责
2015/04/08 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python