我看到将项目添加到二进制堆的奇怪行为。我添加三个值:20,31,12
。当我检查数组中的项目时,现在有5个值:12,20,20,31,12
。我无法弄清楚重复来自哪里。它为什么复制项目?堆插入方法中的双项目
添加项目:
public void add(int x){
int hole = heap.size();
heap.add(hole, x);
bubbleUp(hole);
}
的bubbleup
方法:
private void bubbleUp(int child) {
int parent;
Bid tmp;
if (child != 0) {
parent = (child-1)/2;
if (heap.get(parent).compareTo(heap.get(child))) {
tmp = heap.get(parent);
heap.add(parent, heap.get(child));
heap.add(child, tmp);
bubbleUp(parent);
}
}
}
感谢您的帮助!我感到羞愧......我应该发现这个错误。那么我不会再做一次! ;) 再次感谢! – user1501127 2013-04-30 13:53:56