通过实例解析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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
Jun 05 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
js常用正则表达式集锦
May 17 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 代码规范小结
2012/03/08 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
技术总监岗位职责
2013/12/05 职场文书
教师的实习鉴定
2013/12/15 职场文书
求职信需要的五点内容
2014/02/01 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
ktv好的活动方案
2014/08/15 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
办公室日常管理制度
2015/08/04 职场文书
新员工入职感想
2015/08/07 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server