以下是使用 JavaScript 实现希尔排序的代码:
function shellSort(arr) { let n = arr.length; let gap = Math.floor(n / 2); while (gap > 0) { for (let i = gap; i < n; i++) { let temp = arr[i]; let j = i; while (j >= gap && arr[j - gap] > temp) { arr[j] = arr[j - gap]; j -= gap; } arr[j] = temp; } gap = Math.floor(gap / 2); } return arr; }
使用方法如下:
let arr = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1]; let sortedArr = shellSort(arr); console.log(sortedArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
希尔排序是一个基于插入排序的快速排序算法,它通过将整个序列分成若干个子序列来进行排序。在每个子序列内部使用插入排序算法,当序列长度减少到一定程度时,插入排序的效率也会随之提高。最终通过排序子序列得到排序后的整个序列。