基于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对象弹出一个层
Mar 26 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
Jul 10 Javascript
jQuery实现的进度条效果
Jul 15 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
AngularJS国际化详解及示例代码
Aug 18 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
老生常谈angularjs中的$state.go
Apr 24 Javascript
JavaScript定时器setTimeout()和setInterval()详解
Aug 18 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
深入剖析JavaScript instanceof 运算符
Jun 14 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 程序员的调试技术小结
2009/11/15 PHP
PHP 引用文件技巧
2010/03/02 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php实现socket推送技术的示例
2017/12/20 PHP
utf8的编码算法 转载
2006/12/27 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python实现图片文件批量重命名
2020/03/23 Python
python中pip的安装与使用教程
2018/08/10 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
青春励志演讲稿范文
2014/08/25 职场文书
Python基础之元编程知识总结
2021/05/23 Python
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Python中第三方库Faker的使用详解
2022/04/02 Python
Python进程池与进程锁之语法学习
2022/04/11 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技