程序员成长-修炼中心 「作者:陈楚城」
导航
博客文章
  • Github (opens new window)
  • 掘金 (opens new window)
组件库 (opens new window)
关于我

chamberlain

前端持续学习者
导航
博客文章
  • Github (opens new window)
  • 掘金 (opens new window)
组件库 (opens new window)
关于我
  • 写在前面
  • vue3学习总结

  • 项目相关

  • 性能优化

  • 你不知道的css

  • 常见问题总结记录

  • 数据结构与算法

    • algorithm
    • binaryTree
    • graph
    • bubbling
    • insert
    • merge
    • quick
    • select
    • shell
    • advance
    • object
    • 摩尔投票法
  • 设计模式

  • TS & JS进阶

  • Node

  • HTTP

  • Linux

  • 开发工具篇

  • 收藏夹

  • OS

  • Nginx

  • 项目工程化

  • 数据库

  • 计算机网络

  • 环境搭建、项目部署

  • 常用工具

  • 自动化

  • js相关

  • QA相关

  • 文章收藏

  • note
  • algorithm
chamberlain
2022-03-14

shell

# 希尔排序

function shell (array) {
    let gaps = [5,3,1];

    for(let g=0;g<gaps.length;g++){
        for(let i=gaps[g];i<array.length;i++){
            let temp = array[i]
            for(var j=i;j>=gaps[g]&&array[j-gaps[g]]>temp;j-=gaps[g]){
                array[j]=array[j-gaps[g]]
                console.log(g,i,j)
            }
            array[j]=temp;
        }
        console.log(array)
    }
}

function dynamicSort (array) {
    let N =array.length;
    let h =1;
    while (h<N/3){
        h = 3*h+1;
    }
    while (h>1){
        for(let i=h;i<N;i++){
            for(let j=i;j>=h&&array[j]<array[j-h];j=j-h){
                [array[j],array[j-h]] = [array[j-h],array[j]]
            }
        }
        h=(h-1)/3;
    }
    return array;
}

console.log(shell([9,3,25,4,1,47,6,8,5,10,25]))
console.log(dynamicSort([9,3,25,4,1,47,6,8,5,10,25]))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
更新时间: 3/15/2022, 12:28:01 AM
select
advance

← select advance→

最近更新
01
02
网站
06-10
03
nav
06-09
更多文章>
Theme by Vdoing | Copyright © 2019-2022 chamberlain | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式