我一直在做我的任务,即创建一堆字符串,并在其上执行各种功能。我现在正在测试我的代码以查看它是否正确插入,但事实并非如此。我正在测试这些词:Golf, Bravo, Hotel, Alpha, Delta, Echo, Charlie, Foxtrot
它会按字母顺序插入它们但是当我打印我的堆时我最终得到:
Alpha
Bravo Charlie
Foxtrot Delta Hotel Echo
Golf
这是我编写的代码:
public boolean insert(String key) {
if(currentSize == maxSize) {
return false;
}
Node newNode = new Node(key);
heapArray[currentSize] = newNode;
trickleUp(currentSize++);
return true;
}
public void trickleUp(int index) {
int parent = (index - 1) / 2;
Node bottom = heapArray[index];
while(index > 0 && heapArray[parent].getKey().compareTo(bottom.getKey()) > 0) {
heapArray[index] = heapArray[parent];
index = parent;
parent = (parent - 1) / 2;
}
heapArray[index] = bottom;
}
编辑:在快速搜索并找到堆的另一个源代码并对其进行测试后,我得到了相同的输出。有没有理由不按字母顺序添加?