因为我们知道表示顶点的整数可以取[0,...,|V|-1]
范围内的值,所以我们可以使用计数排序来在O(V)
时间内对邻接列表的每个条目进行排序。
由于我们要对V
个列表进行排序,因此会为我们提供O(V^2)
时间算法。我不知道如何将其转换为O(V+E)
时间算法...
答案 0 :(得分:2)
实际上,您需要总计E
个元素 - 边数。因此,您对O(V^2)
的估计并不完全正确。您可以按照包含的边数在线性时间内对每个邻接列表进行排序。总而言之,您将拥有E边缘,排序所有列表的复杂性将为O(E)
。当然,由于您拥有V
个列表,因此不能低于O(V)
,因此估算值O(V +E)
。