希尔排序

希尔排序

  希尔排序是插入排序的改进版本,它与插入排序的不同之处在于,它会优先比较距离较远的元素。其中它的时间复杂度为O(n^1.3),空间复杂度O(1),算法相对不稳定。

function shellSort(arr) {
    var length = arr.length;
    var temp , gap = 1;
    while(gap<length/3){
        gap = gap*3+1 ;//动态定义间隔序列
    }
    for (gap; gap>0; gap = parseInt(gap/3)) {
        for (var i = gap; i<length; i++) {
            temp = arr[i];
            for (var j = i - gap; j>=0&&arr[j]>temp; j-=gap) {
                arr[j+gap] = arr[j];
            }
            arr[j+gap] = temp;
        }
    }
    return arr;
}
console.log(shellSort([6,7,3,4,1,5,3,7,4]));
posted @ 2021-12-23 17:04  秋墨江雪  阅读(29)  评论(0编辑  收藏  举报