Я не уверен, как вставить элемент в мою максимальную кучу, а затем просочиться, чтобы свойство максимальной кучи сохранялось. Я выдал исключение, если heapArray заполнен, поэтому не могу вставить элемент.
Я не использую классы JCF или приоритетную очередь для этой программы. Я также добавил свой метод deleteMax, который удаляет максимальное значение кучи и восстанавливает кучу, чтобы сохранялось свойство максимальной кучи.
public class MaxIntHeap {
//my global var's
private int[] heapArray; // default size of 20 in constructor
private int lastOne; //equal to size of the array(heap)
private int size;
private int k;
public void heapInsert(int v) throws HeapException {
if(lastOne == heapArray.length - 1 ){
throw new HeapException("The value " + v + " cannot be inserted because the heap is FULL!");
}
else{ //This is where i am lost as to how i should insert
lastOne++; //size of lastOne is increased.
}
Это мой метод removeMax.
public int removeMax ()throws HeapException {
if(size == 0){
throw new HeapException("The Heap is empty, therefore the Max value of the heap cannot be
removed.");
}
else{
int max = heapArray[0];
heapArray[0] = heapArray[lastOne];
lastOne--;
k = 0;
while(k > 0){
int j = k / 2;
if(heapArray[k] < heapArray[j]){
swap(heapArray[k], heapArray[j]); //swap method...
k = j;
}
else
break;
}
return max;
}
}
Любая помощь будет принята с благодарностью. Спасибо!