js希尔排序

基本原理:

根据增量来分组,分组之后进行直接插入排序,当基本有序的时候,再对文件进行一次直接插入排序,主要是按增量分组,且最后一次增量必须为1

性能分析

let arr = [1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15, 8, 16];
        function shellSort(arr) {
            let n = arr.length;
            //定义初始增量
            let gap = Math.floor(n / 2);
            while (gap > 0) {
                for (let i = gap; i < n; i++) {
                    let j = i;
                    //当前项
                    let current = arr[i];
                    while (j - gap >= 0 && current < arr[j - gap]) {
                        arr[j] = arr[j - gap];
                        //当前项的前一项
                        j = j - gap;
                        arr[j] = current;
                    }
                }
                //缩小增量
                gap = Math.floor(gap / 2)
            }
            return arr;
        }
posted @ 2021-01-07 11:02  黑黑哈哈  阅读(69)  评论(0编辑  收藏  举报