基于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页面加载完执行事件代码
Feb 11 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
jQuery中DOM节点删除之empty与remove
Jan 20 Javascript
浅谈vue项目打包优化策略
Sep 29 Javascript
Vue 组件封装 并使用 NPM 发布的教程
Sep 30 Javascript
vue配置font-awesome5的方法步骤
Jan 27 Javascript
详解关于html,css,js三者的加载顺序问题
Apr 10 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
基于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
mysql5写入和读出乱码解决
2006/11/25 PHP
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
关于Python中进度条的六个实用技巧分享
2022/04/05 Python