javascript实现希尔排序算法

希尔排序是一种高级的排序算法,接下来我们将使用JS对希尔排序进行实现。

1、准备10000个取值在0~10000之间的随机整数集

var arr = [];
		for(var i=0;i<10000;i++){
			num = Math.ceil(Math.random()*10000);
			arr.push(num);
		}	

2、指定间隔


    gaps = [701,301,132,57,23,10,4,1];	//此处未动态计算间隔,因此最终的效率较低(但较冒泡、排序、插入还是较高的)

3、三重for循环实现

function shell(){
			for(var g = 0;g < gaps.length;g++){
				for(var i = gaps[g];i < arr.length;i++){//循环确定间隔数
					for(var j = i;j >=gaps[g] && arr[j-gaps[g]] > arr[j];j-=gaps[g]){
						temp = arr[j-gaps[g]];
						arr[j-gaps[g]] = arr[j];
						arr[j] = temp;
					}
				}
			}
			console.log(arr);
		}

此时观察一下控制台 输出:
在这里插入图片描述
发现已经进行了排序。

全部代码如下:
在这里插入图片描述

说明:此处间隔的确定是用数组指定的方式,这导致了最终效率的低下,后面笔者会以动态确定间隔序列的方式对希尔排序进行优化。

猜你喜欢

转载自blog.csdn.net/qq_32925031/article/details/88726904