通过实例解析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拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
Jun 14 Javascript
JS实现的数组去除重复数据算法小结
Nov 17 Javascript
js动态引入的四种方法
May 05 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
JavaScript执行机制详细介绍
Dec 06 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读取PDF内容配合Xpdf的使用
2012/11/24 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
Javascript基础教程之变量
2015/01/18 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
转党组织关系介绍信
2014/01/08 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
业务员自荐信范文
2014/04/20 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
电影圆明园观后感
2015/06/03 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL