js实现希尔排序

/**

    * 希尔排序

    * 时间复杂度 平均O(nlogn)

    *

    * @param {any} arr

    * @returns

    *

    * @memberof sort

    */

    sort2(arr) {

        for (let gap = Math.floor(arr.length/2);gap > 0;gap=Math.floor(gap/2)) {

            for(let i = gap;i < arr.length;i++) {

                let j = i;

                let temp = arr[j];

                for(;j >= gap;j -= gap) {

                    if(arr[j-gap] > temp) {

                        arr[j] = arr[j-gap];

                    }else{

                        break;

                    }

                }

                arr[j] = temp;

            }

        }

        return arr;

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考:十大经典排序算法 0、排序算法说明 0.1排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明...
    谁在烽烟彼岸阅读 1,028评论 0 12
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 675评论 0 0
  • 希尔排序本质上是一种插入排序,但是对数列进行了等间隔分组处理,在每一组中做插入排序,这一优化使得原本 O(n^2)...
    world_7735阅读 459评论 0 1
  • 希尔排序本质上是一种插入排序,但是对数列进行了等间隔分组处理,在每一组中做插入排序,这一优化使得原本 O(n^2)...
    Leondt阅读 5,361评论 5 6
  • 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对...
    Demon_code阅读 1,064评论 0 2