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); }
此时观察一下控制台 输出: 发现已经进行了排序。
全部代码如下:
说明:此处间隔的确定是用数组指定的方式,这导致了最终效率的低下,后面笔者会以动态确定间隔序列的方式对希尔排序进行优化。
上一篇:
IDEA上Java项目控制台中文乱码