特性:
| 排序方法 | 时间复杂度 | 空间复杂度 | 稳定性 |
|---|---|---|---|
| 堆排序 | O(nlogn) |
O(1) |
不稳定 |
思路:
实现:
function sort(a) {let N = a.length;// 从右至左,通过下沉构造堆for (let k = parseInt(N / 2); k >= 1; k--) sink(a, k, N);while(N > 1) {// 将顶部最大的替换到底部exch(a, 1, N--);// 重新下沉,下沉完成后会出现第2,3,4....N - 1大的值置换到顶部// 执行同样的操作,最终会形成一个有序二叉堆sink(a, 1, N);}}

