为什么排序图的边缘需要O(E log E)时间?

时间:2017-04-29 08:59:08

标签: algorithm optimization graph runtime big-o

我正在尝试计算最小生成树算法的运行时间。

这是算法: enter image description here

我理解从1到3的步骤的时间。但我真的不明白为什么以非递减顺序对边缘进行排序需要O(E logE)时间。

谢谢。

4 个答案:

答案 0 :(得分:3)

因为大多数强大的算法(mergesort,heapsort,quicksort)保证在n log n最坏情况时间内对n个项目的集合进行排序。见证明here。在你的情况下,E似乎是边数。所以E记录E对它们进行排序。

答案 1 :(得分:2)

所有基于比较的排序算法至少需要$ \ Omega(n \ log n)$时间来排序$ n $数字,而heapsort和mergesort是渐近最优的,因为它们需要$ O(n \ log n)$时间。

答案 2 :(得分:1)

步骤4对图表中的所有 | E | 边缘进行排序。

假设我们使用quicksort或等效算法,因此该步骤将使用 O(n log n)时间来执行该步骤。在这种情况下, n = | E | ,因此排序步骤需要 O(| E | log | E |)

答案 3 :(得分:1)

在平均或最差情况下,所有通用比较排序都不能比O(n log n)表现更好。因此,作者选择了任何排序算法的平均场景,您可以自己选择。