我想编写最有效的算法来查找Max-Heap中的最小元素。
重要事实:堆表示为数组(索引i中的每个元素都有2个子元素 - 左边和右边 - 索引2i和2i + 1),所有元素都不同。
这就是我的想法:
没有额外的空间:最小值只在叶子中 - 大约有n / 2个叶子,所以我们必须检查它们中的每一个 - 运行时: O(n / 2)= O( n)的
增加空间:构建最小堆,另外还有max-heap。在这个堆中,我们只有叶子,所以要获得最小元素(最小叶子)只有 O(1) - 从最小堆中提取min。主要缺点是我们必须更改所有其他方法 - 添加,删除等,因为我们需要更新最小堆。
一个。您如何看待我的算法? 湾我很乐意得到你的改进。当我们没有使用额外的空间时,是否有更高效的 O(n)算法?
我希望找到最有效的算法有和没有额外空间( 2解决方案)。
谢谢!