基于JavaScript实现的插入排序算法分析


Posted in Javascript onApril 14, 2017

本文实例讲述了基于JavaScript实现的插入排序算法。分享给大家供大家参考,具体如下:

根据排序过程中使用的存储器不同,可以将排序方法分为两大类:内部排序外部排序

内部排序是指待排序记录存放在计算机随机存储器中进行的排序过程外部排序指的是待排序的记录数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程

下面介绍几种常见的内部排序方式:

插入排序

插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数加1的有序表。

插入排序有两个循环,外循环将数组元素挨个移动,而内循环则对外循环中选定的元素及它后面的那个元素比较。如果外循环中选中元素小,那么数组元素会向右移动,为内循环中的这个元素腾出位置。

下面我们通过js实现直接插入排序过程:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JavaScript插入排序</title>
  </head>
  <body>
<script type="text/javascript">
  function insertSort(nums){//插入排序
    var temp,
      inner;
    for(var outer=1;outer<nums.length;outer++){//外循环选中元素
      temp=nums[outer];//选中元素
      inner=outer;
      while(inner>0&&(nums[inner-1]>=temp)){//内循环与选中元素对比
        nums[inner]=nums[inner-1];//如果选中元素前面的元素大,则前面的元素移到右侧
        inner--;//依次比较
      }
      nums[inner]=temp;//直到找到正确的位置
    }
  }
  function show(nums){//显示数组
    for(var i=0;i<nums.length;i++){
      document.write(nums[i]+' ');
    }
    document.write('<br>');
  }
  var nums=[6,10,0,6,5,8,7,4,2,7];
  show(nums);//6 10 0 6 5 8 7 4 2 7
  insertSort(nums);
  show(nums);//0 2 4 5 6 6 7 7 8 10
</script>
  </body>
</html>

排序过程如下:

基于JavaScript实现的插入排序算法分析

可以看到,插入排序的运行并非通过数据交换,而是通过将较大的数组元素移动到右侧,为数组左侧的较小元素腾出位置。其时间复杂度为O(n2)。

基于JavaScript实现的插入排序算法分析

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
url 编码 js url传参中文乱码解决方案
Apr 11 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
初识Node.js
Sep 03 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
js表单中选择框值的获取及表单的序列化
Dec 17 Javascript
Bootstrap 轮播(Carousel)插件
Dec 26 Javascript
vue.js树形组件之删除双击增加分支实例代码
Feb 28 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
微信小程序wx.request拦截器使用详解
Jul 09 Javascript
基于JavaScript实现的折半查找算法示例
Apr 14 #Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 #Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 #Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 #Javascript
angularjs实现首页轮播图效果
Apr 14 #Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 #Javascript
微信小程序 下拉菜单简单实例
Apr 13 #Javascript
You might like
php中显示数组与对象的实现代码
2011/04/18 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
教大家制作简单的php日历
2015/11/17 PHP
PHP的自定义模板引擎
2017/03/24 PHP
用于table内容排序
2006/07/21 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
JQuery live函数
2010/12/24 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
工会主席岗位责任制
2014/02/11 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
门市房租房协议书
2014/12/04 职场文书
六一儿童节开幕词
2015/01/29 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
如何撰写促销方案?
2019/07/05 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL