对于给定的图形G =(V,E),如何在O(E + V)时间内对其邻接列表表示进行排序?

时间:2015-05-05 14:55:24

标签: algorithm sorting graph

因为我们知道表示顶点的整数可以取[0,...,|V|-1]范围内的值,所以我们可以使用计数排序来在O(V)时间内对邻接列表的每个条目进行排序。

由于我们要对V个列表进行排序,因此会为我们提供O(V^2)时间算法。我不知道如何将其转换为O(V+E)时间算法...

1 个答案:

答案 0 :(得分:2)

实际上,您需要总计E个元素 - 边数。因此,您对O(V^2)的估计并不完全正确。您可以按照包含的边数在线性时间内对每个邻接列表进行排序。总而言之,您将拥有E边缘,排序所有列表的复杂性将为O(E)。当然,由于您拥有V个列表,因此不能低于O(V),因此估算值O(V +E)