基于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 相关文章推荐
js禁止小键盘输入数字功能代码
Aug 01 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
js控制网页背景音乐播放与停止的方法
Feb 06 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
微信小程序实现登录页云层漂浮的动画效果
May 05 Javascript
koa+mongoose实现简单增删改查接口的示例代码
May 13 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 Javascript
实例分析javascript中的异步
Jun 02 Javascript
node.js基础知识汇总
Aug 25 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
sae使用smarty模板的方法
2013/12/17 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
理解Python中函数的参数
2015/04/27 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
老公出轨后的保证书
2015/05/08 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
vue里使用create, mounted调用方法
2022/04/26 Vue.js
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript