基于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分页
Jun 07 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
Apr 12 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
Jun 24 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
javascript轮播图算法
Oct 21 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
js生成word中图片处理方法
Jan 06 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
javascript History对象原理解析
Feb 17 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
Nov 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中的HashTable结构详解
2013/06/13 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python抓取百度查询结果的方法
2015/07/08 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
python sort、sort_index方法代码实例
2019/03/28 Python
python之拟合的实现
2019/07/19 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Python实现随机爬山算法
2021/01/29 Python
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
恋恋笔记本观后感
2015/06/16 职场文书