Open cj0x39e opened 5 years ago
function shellSort(arr) {
var list=arr.slice(0);
var len = arr.length,
temp,
gap = 1;
while (gap < len / 3) { //动态定义间隔序列
gap = gap * 3 + 1;
}
for (gap; gap > 0; gap = Math.floor(gap / 3)) {
for (var i = gap; i < len; 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;
}
问题
给定下面的数组,请使用 希尔排序 算法使其按从小到大的顺序排列?
...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔 ...🤔
丰橙解答
时间复杂度
和增量相关,看 wiki
可视化链接
https://algorithm-visualizer.org/brute-force/shellsort
测试链接
因为 leetcode 测试用例很多,所以在 leetcode 测试通过就行了: https://leetcode-cn.com/problems/sort-an-array/