本文实例讲述了基于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
# 希尔排序
# 算法
# JavaScript希尔排序、快速排序、归并排序算法
# javascript快速排序算法详解
# JS实现冒泡排序
# 插入排序和快速排序并排序输出
# js实现数组冒泡排序、快速排序原理
# JavaScript排序算法之希尔排序的2个实例
# JavaScript中几种常见排序算法小结
# Javascript堆排序算法详解
# JS折半插入排序算法实例
# JS排序算法之希尔排序与快速排序实现方法
# 希尔
# 遍历
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 而非
# 它会
# 更多关于
# 来实现
# 所述
# 需要注意
# 有多远
# 程序设计
# 过程中
# 较远
# 对此
# 后移
# 讲述了
# show
相关文章:
如何解决ASP生成WAP建站中文乱码问题?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
教程网站设计制作软件,怎么创建自己的一个网站?
制作农业网站的软件,比较好的农业网站推荐一下?
山东网站制作公司有哪些,山东大源集团官网?
如何选择服务器才能高效搭建专属网站?
建站之星导航如何优化提升用户体验?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何快速搭建虚拟主机网站?新手必看指南
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
建设网站制作价格,怎样建立自己的公司网站?
建站之星代理如何优化在线客服效率?
制作网页的网站有哪些,电脑上怎么做网页?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
已有域名和空间如何搭建网站?
如何快速搭建高效WAP手机网站吸引移动用户?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何在阿里云服务器自主搭建网站?
如何通过VPS建站实现广告与增值服务盈利?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
如何选择高效可靠的多用户建站源码资源?
深圳网站制作案例,网页的相关名词有哪些?
网站制作服务平台,有什么网站可以发布本地服务信息?
一键网站制作软件,义乌购一件代发流程?
建站之星代理如何获取技术支持?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
青岛网站建设如何选择本地服务器?
建站之星后台密码遗忘或太弱?如何重置与强化?
深圳网站制作的公司有哪些,dido官方网站?
建站OpenVZ教程与优化策略:配置指南与性能提升
为什么Go需要go mod文件_Go go mod文件作用说明
营销式网站制作方案,销售哪个网站招聘效果最好?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何快速查询网址的建站时间与历史轨迹?
如何使用Golang table-driven基准测试_多组数据测量函数效率
如何在腾讯云服务器上快速搭建个人网站?
简单实现Android验证码
建站之星安装需要哪些步骤及注意事项?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
深入理解Android中的xmlns:tools属性
简单实现Android文件上传
如何用PHP快速搭建CMS系统?
如何在云虚拟主机上快速搭建个人网站?
如何在新浪SAE免费搭建个人博客?
如何用PHP工具快速搭建高效网站?
如何在IIS7中新建站点?详细步骤解析
*请认真填写需求信息,我们会在24小时内与您取得联系。