基于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 相关文章推荐
jQuery 使用手册(七)
Sep 23 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
javascript数组的使用
Mar 28 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
详解JavaScript逻辑Not运算符
Dec 04 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
Feb 13 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
javascript实现画板功能
Apr 12 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
浅谈php://filter的妙用
2019/03/05 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Python isinstance函数介绍
2015/04/14 Python
python 使用get_argument获取url query参数
2017/04/28 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
keras 权重保存和权重载入方式
2020/05/21 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
网管求职信
2014/03/03 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
红色经典电影观后感
2015/06/18 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL