📅  最后修改于: 2023-12-03 15:42:13.147000             🧑  作者: Mango
题目描述:
下列关于堆排序(heap sort)的说法哪个是正确的?
A. 堆排序保留堆的性质并按顺序将其排序,最坏时间复杂度为 $\Omega(n)$.
B. 堆排序是一种不稳定的排序算法,最坏时间复杂度为 $\Theta(n^2)$.
C. 堆排序保留堆的性质并按顺序将其排序,最坏时间复杂度为 $\Theta(n \log n)$.
D. 堆排序是一种稳定的排序算法,最坏时间复杂度为 $\Theta(n \log n)$.
答案为 C。
堆排序是一种基于堆数据结构的排序算法,它首先构建一个堆,然后不断地从堆中取出最大(或最小)元素,并将其放在数组的末尾,逐步形成有序的数组。
堆排序的思路如下:
因为堆可以用一维数组表示,因此堆排序的空间复杂度为 $\Theta(1)$.
堆排序的时间复杂度为 $\Theta(n \log n)$,其中 n 表示待排序的元素个数。
堆排序的证明如下:
由于在取出最大(或最小)元素的过程中,不断地将其放在数组的末尾,因此堆排序是一种不稳定的排序算法。如果希望得到稳定的排序结果,可以使用其他的排序算法,比如归并排序。
堆排序 - 维基百科
https://zh.wikipedia.org/wiki/%E5%A0%86%E6%8E%92%E5%BA%8F