Because we know that the integers representing a vertex can take values in [0,...,|V|-1]
range, we can use counting sort in order to sort each entry of the adjacency list in O(V)
time.
Since we have V
lists to sort, that would give us a O(V^2)
time algorithm. I don't see how we can transform this into an O(V+E)
time algorithm...
In fact you need to sort E
elements in total - the number of edges. Thus your estimation of O(V^2)
is not quite correct. You sort each of the adjacency lists in linear time with respect to the number of edges it contains . And as in total you will have E edges, the complexity of sorting all lists will be O(E)
. Of course as you have V
lists, you can't get lower than O(V)
and thus the estimation O(V +E)
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.