通过实例解析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高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
javascript获取网页宽高方法汇总
Jul 19 Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
解决vue.js this.$router.push无效的问题
Sep 03 Javascript
angular4+百分比进度显示插件用法示例
May 05 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
手把手教你实现 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php判断邮箱地址是否存在的方法
2016/02/13 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
JavaScript console的使用方法实例分析
2020/04/28 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
关于Python面向对象编程的知识点总结
2017/02/14 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
python反编译学习之字节码详解
2019/05/19 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Python PyQt5整理介绍
2020/04/01 Python
快速了解Python开发环境Spyder
2020/06/29 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
html5绘制时钟动画
2014/12/15 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
《雨霖铃》教学反思
2014/02/22 职场文书
党支部四风整改方案
2014/10/25 职场文书
2015年采购工作总结
2015/04/10 职场文书
网吧员工管理制度
2015/08/05 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书