通过实例解析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 相关文章推荐
jquery 事件执行检测代码
Dec 09 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
Jul 03 Javascript
加速IE的Javascript document输出的方法
Dec 02 Javascript
html中table数据排序的js代码
Aug 09 Javascript
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
javascript元素动态创建实现方法
May 13 Javascript
JavaScript数组去重的3种方法和代码实例
Jul 01 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
Vue实现Header渐隐渐现效果的实例代码
Nov 05 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
基于Zend的Config机制的应用分析
2013/05/02 PHP
解析PHP的session过期设置
2013/06/29 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
PHP实现验证码校验功能
2017/11/16 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
代领学位证书毕业证书委托书
2014/09/30 职场文书
农业生产宣传标语
2014/10/08 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Python中time与datetime模块使用方法详解
2022/03/31 Python