基于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面象对象设计
Apr 28 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
Dec 06 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
vue实现循环切换动画
Oct 17 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
May 22 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python线程池threadpool使用篇
2018/04/27 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
一名女生的自荐信
2013/12/08 职场文书
继电保护工岗位职责
2014/01/05 职场文书
护士个人总结范文
2015/02/13 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
心灵点滴观后感
2015/06/02 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫