即使堆使您免于遍历数组,它也会减慢算法的“更新”部分:数组更新为O(1),而堆更新为O(log(N))。
本质上,您在算法的一部分中交换速度而在另一部分中交换速度。
无论如何,您都必须搜索N次。但是,在密集图中,您需要大量更新(〜V ^ 2),而在稀疏图中,则不需要更新。
我脑海中的另一个例子是在数组中搜索元素。如果只执行一次,则线性搜索是最好的-但是,如果要执行很多查询,最好对它进行排序并每次使用二进制搜索。

即使堆使您免于遍历数组,它也会减慢算法的“更新”部分:数组更新为O(1),而堆更新为O(log(N))。
本质上,您在算法的一部分中交换速度而在另一部分中交换速度。
无论如何,您都必须搜索N次。但是,在密集图中,您需要大量更新(〜V ^ 2),而在稀疏图中,则不需要更新。
我脑海中的另一个例子是在数组中搜索元素。如果只执行一次,则线性搜索是最好的-但是,如果要执行很多查询,最好对它进行排序并每次使用二进制搜索。