基于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去掉数组中的重复元素
Jan 13 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
Sep 08 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
vue实现新闻展示页的步骤详解
Apr 11 Javascript
Javascript 关于基本类型和引用类型的个人理解
Nov 01 Javascript
js实现select下拉框选择
Jan 11 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
Yii实现简单分页的方法
2016/04/29 PHP
jquery 通过name快速取值示例
2014/01/24 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
python根据出生日期返回年龄的方法
2015/03/26 Python
Python虚拟环境项目实例
2017/11/20 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
政府绩效管理实施方案
2014/05/04 职场文书
写景作文评语集锦
2014/12/25 职场文书
专项资金申请报告
2015/05/15 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
实践论读书笔记
2015/06/29 职场文书
迎新年主持词
2015/07/06 职场文书
宾馆安全管理制度
2015/08/06 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python