堆排序:一种比较排序算法,先把数据组织成堆(通常是最大堆),然后反复取出堆顶元素并调整堆,从而得到有序序列。它的典型时间复杂度是 O(n log n),并且可以原地排序(只需常数级额外空间),但通常不稳定。(此外也有小根堆版本,用于升/降序的不同实现。)
Heapsort runs in O(n log n) time.
堆排序的时间复杂度是 O(n log n)。
Although quicksort is often faster in practice, heapsort guarantees O(n log n) even in the worst case by repeatedly heapifying after extracting the maximum.
尽管快速排序在实践中常常更快,但堆排序通过每次取出最大值后重新调整堆,能在最坏情况下也保证 O(n log n)。
/ˈhiːpˌsɔːrt/
heapsort 是由 heap(堆) + sort(排序) 构成的复合词,字面意思就是“用堆来进行排序”。其中 heap 在计算机科学里指“堆这种数据结构”(常见为二叉堆),用于高效地获取最大/最小元素;sort 则表示将元素按一定顺序排列。