基于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显示选择目录对话框的代码
Nov 10 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
javaScript实现滚动新闻的方法
Jul 30 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
jquery dataview数据视图插件使用方法
Dec 23 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
iview实现select tree树形下拉框的示例代码
Dec 21 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 Javascript
layui导出所有数据的例子
Sep 10 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
Sep 27 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 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聊天室技术
2006/10/09 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
关于js datetime的那点事
2011/11/15 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
python基础教程之循环介绍
2014/08/29 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
python中Mako库实例用法
2020/12/31 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
法学专业应届生求职信
2013/10/16 职场文书
《学棋》教后反思
2014/04/14 职场文书
购房意向书
2014/08/30 职场文书
出生医学证明书
2014/09/15 职场文书
台风停课通知
2015/04/24 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server