答案是D,堆排序。
选项中的四种排序方法的最坏时间复杂度、最好时间复杂度 、平均时间复杂度分别为:
A、冒泡排序: O(n2) 、O(n) 、O(n2)。
B、快速排序: O(n2) 、O(nlog2n)、 O(nlog2n)。
C、插入排序: O(n2)、 O(n) 、O(n2)。
D、堆排序: O(nlog2n)、 O(nlog2n)、 O(nlog2n)。
所以,在最坏情况下,冒泡排序时间复杂度=快速排序时间复杂度=插入排序时间复杂度= O(n2)>堆排序时间复杂度= O(nlog2n)。答案选D。
扩展资料:
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序中堆的操作:
在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:
最大堆调整:将堆的末端子节点作调整,使得子节点永远小于父节点。
创建最大堆:将堆中的所有数据重新排序。
堆排序:移除位在第一个数据的根节点,并做最大堆调整的递归运算。
参考资料:百度百科-堆排序排序方法 最坏时间复杂度 最好时间复杂度 平均时间复杂度
直接插入 O(n2) O(n) O(n2)
简单选择 O(n2) O(n2) O(n2)
起泡排序 O(n2) O(n) O(n2)
快速排序 O(n2) O(nlog2n) O(nlog2n)
堆排序 O(nlog2n) O(nlog2n) O(nlog2n)
归并排序 O(nlog2n) O(nlog2n) O(nlog2n)
所以选d