时间复杂度heapsr alogrithm

时间:2017-11-18 14:46:55

标签: time-complexity heapsort

在所有情况下,密码时间复杂度为nlog(n)。

但是我不明白为什么,因为我们必须在子二进制树上调用n次heapify算法,其中“i”已经是ilog(i)复杂性。

1 个答案:

答案 0 :(得分:0)

heapify操作需要O(lg(n))次。当您将最大/最小节点与堆底部的另一个节点交换时,您必须将该节点推回到底部。因为有n个元素并且堆的高度等于lg(n),所以当您的节点遍历堆时,您将进行lg(n)交换。如果您重复此n次,则时间将为O(nlg(n))

在最坏的情况下(输入已排序,但顺序相反),构建堆和排序都将为O(nlg(n))。在最好的情况下(排序的输入),建筑物将是O(n),并且如果输入包含相等的值,则排序将是O(nlg(n))O(n))。平均情况下,建筑物将处于最佳和最差情况之间,排序将为O(nlg(n))