Я научился использовать кучи и как упражнение Я пытаюсь написать программу, используя класс кучи, который я создал для сортировки слов. Я прочитал слова из файла и успешно добавил их в кучу. У меня возникли проблемы с выяснением того, как я могу распечатать отсортированный список слов. Из моего понимания того, как работает мини-куча, если я удалю из узла min/root, они всегда будут удалены в отсортированном порядке. Пока я попытался сделать простой цикл, но только половина кучи удаляется.Использование Min-Heap для сортировки слов
Моего Главное Покушение
public static void main(String[] args) {
Heap heap = new Heap();
heap = read(heap);
for(int i = 0; i < heap.getSize(); i++){
heap.removeMin();
}
heap.printHeap();
}
Это функция удалить в моем кучного классе
public Node removeMin(){
Node min = heap.get(0);
int index = heap.size() - 1;
Node last = heap.remove(index);
if(index > 0){
heap.set(0, last);
Node root = heap.get(0);
int end = heap.size() - 1;
index = 0;
boolean done = false;
while(!done){
if(getLCLoc(index) <= end){
//left exists
Node child = getNodeAt(getLCLoc(index));
int childLoc = getLCLoc(index);
if(getRCLoc(index) <= end){
//right exists
if(getNodeAt(getRCLoc(index)).getData().compareToIgnoreCase(child.getData()) < 0){
child = getNodeAt(getRCLoc(index));
childLoc = getRCLoc(index);
}
}
if(child.getData().compareToIgnoreCase(root.getData()) < 0){
heap.set(index, child);
index = childLoc;
}else{
done = true;
}
}else{
//no children
done = true;
}
}
heap.set(index, root);
}
return min;
}
Информация не достаточна. См. Http://stackoverflow.com/help/mcve – gknicker