feat: 添加优化后的希尔排序,使用希尔序列

This commit is contained in:
LouisFonda 2024-02-24 15:19:41 +08:00
parent 26e211c792
commit 6513a1e5be

View File

@ -69,3 +69,25 @@ export function shellSort2(arr) {
gap = Math.floor(gap / 2) gap = Math.floor(gap / 2)
} }
} }
/**
* 优化版本
* @param {number[]} arr
*/
export function shellSort3(arr){
const n = arr.length
let gap = Math.floor(n/2)
while (gap>0){ // 使用不同的gap对子数组排序
for(let i = gap; i<n;i++){
// 插入过程
let temp = arr[i]
let j = i
while(j>0 && arr[j-gap] > temp) {
arr[j] = arr[j-gap]
j-=gap
}
arr[j] = temp
}
gap = Math.floor(gap/2)
}
}