基于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据option的value值快速设定初始的selected选项
Aug 13 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
JavaScript 七大技巧(二)
Dec 13 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
vue2.0父子组件及非父子组件之间的通信方法
Jan 21 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
vue动画打包后失效问题的解决方法
Sep 18 Javascript
vue element table 表格请求后台排序的方法
Sep 28 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
May 26 Javascript
vue实现日历备忘录功能
Sep 24 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自动跳转中英文页面
2008/07/29 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
ThinkPHP控制器详解
2015/07/27 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
PHP钩子实现方法解析
2019/05/21 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
javascript 表单规则集合对象
2009/07/21 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
Python语言生成水仙花数代码示例
2017/12/18 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
英国森林假期:Forest Holidays
2021/01/01 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
大学生个人简历自我评价
2013/11/16 职场文书
拓展培训心得体会
2014/01/04 职场文书
五一劳动节活动记录
2014/03/23 职场文书
驾驶员安全责任书
2014/07/22 职场文书
先进党支部申报材料
2014/12/24 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Python基础学习之奇异的GUI对话框
2021/05/27 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers