基于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系列之数值计算
Jun 07 Javascript
jquery弹出层类代码分享
Dec 27 Javascript
js中arguments,caller,callee,apply的用法小结
Jan 28 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
javascript实现可键盘控制的抽奖系统
Mar 10 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 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实现与ASP Banner组件相似的类
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
Python中的各种装饰器详解
2015/04/11 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
医学求职自荐信
2014/06/21 职场文书
四风查摆剖析材料
2014/10/10 职场文书
儿园租房协议书范本
2014/12/02 职场文书
2015年电教工作总结
2015/05/26 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
运动会100米广播稿
2015/08/19 职场文书
创业计划书之网吧
2019/10/10 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers