通过实例解析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 全面解析各种浏览器网页中的JS 执行顺序
Feb 17 Javascript
表单序列化与jq中的serialize使用示例
Feb 21 Javascript
javascript的数组和常用函数详解
May 09 Javascript
Javascript变量的作用域和作用域链详解
Apr 02 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
js精准的倒计时函数分享
Jun 29 Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
简单说说angular.json文件的使用
Oct 29 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
Oct 16 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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
JQuery toggle使用分析
2009/11/16 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python 读写文件的操作代码
2018/09/20 Python
python实现一组典型数据格式转换
2018/12/15 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python 如何调用 dubbo 接口
2020/09/24 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
工作交流会欢迎词
2014/01/12 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
会计工作能力自我评价
2015/03/05 职场文书
员工工作表现自我评价
2015/03/06 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
字节飞书面试promise.all实现示例
2022/06/16 Javascript