使用JavaScript实现希尔排序

什么是希尔排序?

希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。

希尔排序基本思想

比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。接下来是JS代码实现`

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //希尔排序算法
    function shellSort(arr){//希尔排序
        var gaps=[5,3,1];//定义间隔区间
		for(var g=0;g<gaps.length;g++){//一个一个间隔值开始
			for(var i=gaps[g];i<arr.length;i++){//以间隔值遍历
				var temp=arr[i];//选中元素
				 for(var j=i;j>=gaps[g]&&arr[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一个大于后面一个
					arr[j]=arr[j-gaps[g]];//后移
                        }
                        arr[j]=temp;//填补
                    }
            }
            return arr
        }
        //生成随机数组
		function random(){
			var arr = []
			for(var i = 0;i<20;i++){
				var num = parseInt(Math.random()*100+10)
				arr.push(num)
			}
			return arr
		}
		var arr = random()
        console.log(arr)
        console.log(shellSort(arr))
    </script>
</head>
<body>
</body>
</html>

以下是浏览器控制台截图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值