基于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 相关文章推荐
JavaScript生成GUID的多种算法小结
Aug 18 Javascript
js Date概念详细介绍
Nov 22 Javascript
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
JS 使用for循环遍历子节点查找元素
Sep 06 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
AngularJS监听路由的变化示例代码
Sep 23 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
react开发教程之React 组件之间的通信方式
Aug 12 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
javascript实现京东快递单号的查询效果
Nov 30 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
python控制台显示时钟的示例
2014/02/24 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
python 模拟登陆github的示例
2020/12/04 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
司机辞职报告范文
2014/01/20 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
vue如何清除浏览器历史栈
2022/05/25 Vue.js