私は、文字列のヒープを作成し、それにさまざまな機能を実行するという課題に取り組んできました。現在、コードが正しく挿入されているかどうかをテストしていますが、そうではありません。私は単語をテストしています: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;
}
編集:クイック検索を実行し、ヒープの別のソース コードを見つけてテストした後、同じ出力が得られました。これがアルファベット順に追加されていない理由はありますか?