基于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调用CS里的带参方法实例
Aug 01 Javascript
jQuery中的val()示例应用
Feb 26 Javascript
JavaScript版的TwoQueues缓存模型
Dec 29 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
详解iframe与frame的区别
Jan 13 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
jQuery validate 验证radio实例
Mar 01 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
Nov 02 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP未登录自动跳转到登录页面
2016/12/21 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
浅谈python中的变量默认是什么类型
2016/09/11 Python
python将unicode转为str的方法
2017/06/21 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
python如何实现视频转代码视频
2019/06/17 Python
Django REST framework内置路由用法
2019/07/26 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python字典与json转换的方法总结
2020/12/28 Python
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
三方协议书范本
2014/04/22 职场文书
志愿者活动总结
2014/04/28 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
婚礼答谢词范文
2015/09/29 职场文书
初中数学教学反思范文
2016/02/17 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python