我有一个用于图形搜索的基于数组的二进制堆(尽管目的无关紧要)。
(索引 0 处的项目是堆的顶部。)
每隔一段时间,堆顶部的项目满足我正在寻找的标准,因此我将其弹出并保存以备后用。
目前,我只是将这些找到的项目放在一个单独的数组中并将它们返回给用户。
但是,我想知道:有什么有效的方法可以让我将项目保持在原始数组的前面,通过某种方式简单地以某种方式重新调整堆的“活动”部分的边界(即,移动起始边界一个元素的活动部分)并继续直到我完成?
天真地这样做会破坏堆的结构。
我有一个用于图形搜索的基于数组的二进制堆(尽管目的无关紧要)。
(索引 0 处的项目是堆的顶部。)
每隔一段时间,堆顶部的项目满足我正在寻找的标准,因此我将其弹出并保存以备后用。
目前,我只是将这些找到的项目放在一个单独的数组中并将它们返回给用户。
但是,我想知道:有什么有效的方法可以让我将项目保持在原始数组的前面,通过某种方式简单地以某种方式重新调整堆的“活动”部分的边界(即,移动起始边界一个元素的活动部分)并继续直到我完成?
天真地这样做会破坏堆的结构。