通过实例解析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 相关文章推荐
Json和Jsonp理论实例代码详解
Nov 15 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
ionic3 懒加载
Aug 16 Javascript
ajax前台后台跨域请求处理方式
Feb 08 Javascript
vue-cli配置环境变量的方法
Jul 09 Javascript
JS实现简易贪吃蛇游戏
Aug 24 Javascript
canvas绘制折线路径动画实现
May 12 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和MySQL保存和输出图片
2006/10/09 PHP
用PHP+MySql编写聊天室
2006/10/09 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
前端性能优化及技巧
2016/05/06 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
python实现下载整个ftp目录的方法
2017/01/17 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
django解决跨域请求的问题详解
2019/01/20 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
pandas如何处理缺失值
2019/07/31 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
PHP经典面试题
2016/09/03 面试题
英文版销售经理个人求职信
2013/11/20 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
会务接待方案
2014/02/27 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
调解协议书范本
2016/03/21 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python