• 脚本之家
  • 软件下载
    android软件 MAC软件 驱动下载 字体下载 DLL下载
  • 源码下载
    asp源码 php源码 asp.net源码 jsp源码 网页编辑器 数据库管理 常用组件 脚本下载
  • 在线工具
    在线手册 CSS格式化 JS格式化 Html转化为Js js正则表达式
  • 网页教程基础
  • 服务器常用软件
  • 手机版
  • 关注微信
脚本之家
  • 网页制作
  • 网络编程
  • 脚本专栏
  • 脚本下载
  • 数据库
  • CMS教程
  • 电子书籍
  • 平面设计
  • 媒体动画
  • 操作系统
  • 网站运营
  • 网络安全
  • 在线手册
  • 基础知识
  • javascript类库
  • 表单特效
  • 广告代码
  • 网页特效
  • 黑客性质
  • javascript技巧
  • DOM
  • node.js
  • js其它
您的位置:首页 → 网络编程 → JavaScript → javascript技巧 → 正文内容 JavaScript希尔排序算法

基于JavaScript实现的希尔排序算法分析

作者:布瑞泽的童话 字体:[增加 减小] 类型:转载 时间:2017-04-14 我要评论

这篇文章主要介绍了基于JavaScript实现的希尔排序算法,简单分析了希尔排序的原理并结合实例形式给出了javascript实现希尔排序的操作步骤与相关注意事项,需要的朋友可以参考下

本文实例讲述了基于JavaScript实现的希尔排序算法。分享给大家供大家参考,具体如下:

通过对直接插入排序的分析,可知其时间复杂度为O(n2),但是,如果待排序序列为正序时,其时间复杂度可提高至O(n)。希尔排序正是对此进行改进的排序。希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻元素。通过定义一个间隔序列来表示在排序过程中进行比较的元素之间有多远的间隔。

下图演示了希尔排序中间隔序列是如何运行的:

下面我们通过js来实现希尔排序,代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript希尔排序</title>
</head>
<body>
<script type="text/javascript">
  function shellSort(nums){//希尔排序
    var gaps=[5,3,1];//定义间隔区间
    for(var g=0;g<gaps.length;g++){//一个一个间隔值开始
      for(var i=gaps[g];i<nums.length;i++){//以间隔值遍历
        var temp=nums[i];//选中元素
        for(var j=i;j>=gaps[g]&&nums[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一个大于后面一个
          nums[j]=nums[j-gaps[g]];//后移
        }
        nums[j]=temp;//填补
      }
    }
  }
  function show(nums){//显示数组
    for(var i=0;i<nums.length;i++){
      document.write(nums[i]+' ');
    }
    document.write('<br>');
  }
  var nums=[6,0,2,9,3,5,8,0,5,4];
  show(nums);//6 0 2 9 3 5 8 0 5 4
  shellSort(nums);//希尔排序
  show(nums);//0 0 2 3 4 5 5 6 8 9
</script>
</body>
</html>

其排序过程如下:

希尔排序根据间隔序列的选取不同,时间复杂度也不同,但是需要注意,应该使间隔序列中的值没有除1以外的公因子,并且最后一个间隔值必须等于1。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

您可能感兴趣的文章:

  • JavaScript实现经典排序算法之选择排序
  • JS排序之选择排序详解
  • JavaScript 冒泡排序和选择排序的实现代码
  • 基于JavaScript实现的快速排序算法分析
  • 基于JavaScript实现的插入排序算法分析
  • JavaScript实现经典排序算法之插入排序
  • JavaScript实现经典排序算法之冒泡排序
  • Javascript中的常见排序算法
  • js算法中的排序、数组去重详细概述
  • JavaScript中几种常见排序算法小结
  • javascript快速排序算法详解
  • JavaScript实现的选择排序算法实例分析
Tags:JavaScript 希尔排序 算法

相关文章

  • 2016-12-12Bootstrap基本样式学习笔记之表格(2)
  • 2011-01-01JavaScript flash复制库类 Zero Clipboard
  • 2015-11-11JS使用cookie实现DIV提示框只显示一次的方法
  • 2015-06-06TypeScript 中接口详解
  • 2015-07-07javascript+html5实现绘制圆环的方法
  • 2015-01-01js实现的捐赠管理完整实例
  • 2015-07-07JavaScript包装对象使用详解
  • 2008-06-06非常不错的弹出一个div的js代码
  • 2015-03-03JS+CSS实现Div弹出窗口同时背景变暗的方法
  • 2017-02-02详谈$.data()的用法和作用

最新评论

大家感兴趣的内容

  • 1js刷新页面方法大全
  • 2JS中setTimeout()的用法详解
  • 3js页面跳转常用的几种方式
  • 4javascript深入理解js闭包
  • 5JS打开新窗口的2种方式
  • 6JS截取字符串常用方法详细整理
  • 7js关闭当前页面(窗口)的几种方式
  • 8JS设置cookie、读取cookie、删除
  • 9js 将json字符串转换为json对象的
  • 10JS弹出窗口代码大全(详细整理)

最近更新的内容

    • TreeView 用法(有代码)(asp.net)
    • JavaScript实现经典排序算法之选择排序
    • bootstrap datetimepicker日期插件超详细
    • javascript setTimeout()传递函数参数(包
    • js实现简单的可切换选项卡效果
    • Javascript 中创建自定义对象的方法汇总
    • 深入理解setTimeout函数和setInterval函数
    • 使用typeof判断function是否存在于上下文
    • Javascript中的arguments与重载介绍
    • javascript DOM 操作基础知识小结

常用在线小工具

关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

©CopyRight 2006-2017 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有

  • navicat for mysql图形化管理工具 v11.2.15 64bit 简体中文免费版 下载-脚本之家

  • sybase powerbuilder 12.5 官方正式破解版(powerbuilder 12.1完美破解补丁) 下载-脚本之家

  • 推荐一款mysql图形管理工具navicat 8.2中文免费版 下载-脚本之家

  • 数据库_软件下载 - 脚本之家

  • mssql2008 正式版 sql server 2008 r2 64位32位 下载-脚本之家

  • sybase powerdesigner v12.5 特别破解版 下载-脚本之家

  • powerdesigner下载 power designer v15.1 汉化破解版 下载-脚本之家

  • navicat破解版下载 navicat11注册机(navicat11全系列注册机) 中文绿色版 下载-脚本之家

  • mysql图形工具 mysql gui tools 5.0 附中文汉化包 下载-脚本之家

  • display和visibility的区别_css教程_css_网页制作_脚本之家

  • css 文本字体颜色设置方法(css color)_css教程_css_网页制作_脚本之家

  • 总结30个css3选择器 _css3_css_网页制作_脚本之家

  • 不定宽高的文字在div中垂直居中实现方法_div+css教程_css_网页制作_脚本之家

  • css3制作hover下划线动画_css3_css_网页制作_脚本之家

  • html设置超链接字体颜色和点击后的字体颜色_css教程_css_网页制作_脚本之家

  • div+css实现带箭头的面包屑导航栏_div+css教程_css_网页制作_脚本之家

  • 详解css3中字体平滑处理和抗锯齿渲染_css3_css_网页制作_脚本之家

  • css_网页制作 - 脚本之家

  • css中margin边界叠加问题及解决方案_css教程_css_网页制作_脚本之家

  • css3 仿微信聊天小气泡实例代码_css3_css_网页制作_脚本之家

  • css3动画:5种预载动画效果实例_css3_css_网页制作_脚本之家

  • css控制ul li 的样式详解(推荐)_css教程_css_网页制作_脚本之家

  • div水平垂直居中的完美解决方案_css教程_css_网页制作_脚本之家

  • css中px em rem区别与使用_css教程_css_网页制作_脚本之家

  • css3效果:自定义“w”形运行轨迹实例_css3_css_网页制作_脚本之家