基于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 相关文章推荐
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
javascript控制swfObject应用介绍
Nov 29 Javascript
使用jquery实现图文切换效果另加特效
Jan 20 Javascript
javascript内存管理详细解析
Nov 11 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 Javascript
document.write的几点使用心得
May 14 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
vue组件化中slot的基本使用方法
May 01 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 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
实用函数5
2007/11/08 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
python实现Virginia无密钥解密
2019/03/20 Python
python实现车牌识别的示例代码
2019/08/05 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
技校毕业生个人学习的自我评价
2014/02/21 职场文书
村干部培训班主持词
2014/03/28 职场文书
倡议书格式范文
2014/04/14 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
超强台风观后感
2015/06/09 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书