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


Posted in Javascript onApril 14, 2017

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

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

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

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

下面我们通过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>

其排序过程如下:

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

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

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

Javascript 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
JS中判断null、undefined与NaN的方法
Mar 24 Javascript
javascript与css3动画结合使用小结
Mar 11 Javascript
JavaScript将一个数组插入到另一个数组的方法
Mar 19 Javascript
JavaScript实现简单的数字倒计时
May 15 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
VUE中V-IF条件判断改变元素的样式操作
Aug 09 Javascript
vue实现按钮切换图片
Jan 20 Vue.js
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 #Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 #Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 #Javascript
基于JavaScript实现的插入排序算法分析
Apr 14 #Javascript
基于JavaScript实现的折半查找算法示例
Apr 14 #Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 #Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 #Javascript
You might like
php下通过POST还是GET来传值
2008/06/05 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
Symfony查询方法实例小结
2017/06/28 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
NodeJS安装图文教程
2018/04/19 NodeJs
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
深入浅析Python字符编码
2015/11/12 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
python验证码识别的示例代码
2017/09/21 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python发展简史 Python来历
2019/05/14 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
安全检查验收制度
2014/01/12 职场文书
简历里的自我评价范文
2014/02/24 职场文书
科学发展观活动总结
2014/08/28 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers