问题描述
我正在实现一个最小二元堆 当我使用数组构建它时,它工作正常 但是当我使用 push 填充它时,我得到了它作为输出,所以有什么问题!?
&&& [0,9]
父:0,左:0,右:0 父:0,左:0,右:0 父:0,左:0,右:9
代码如下
public MinHeapByArray(int []arr) {
arrSize = arr.length;
heap = new int[arrSize];
heap = arr;
}
public MinHeapByArray(int n) {
arrSize = n;
heap = new int[arrSize];
}
public static void main(String[] args) {
int[] arr = {3,13,7,16,21,12,9};
MinHeapByArray MinHeapByArray = new MinHeapByArray(7);
for (int i = 0; i < arr.length ; i++) {
System.out.println(arr[i]);
MinHeapByArray.push(arr[i]);
}
MinHeapByArray.printHeap();
}
public MinHeapByArray_Tasneem(int n) {
arrSize = n;
heap = new int[arrSize];
}
public void push(int value) {
heap[arrSize-1] = value;
heapifyUp(arrSize-1);
}
public void heapifyUp(int i) {
if (i == 0)
return;
int ip =getParentIndex(i);
if (heap[i] < heap[ip]) {
swap(i,ip);
heapifyUp(ip);
}
}
public void heapifyDown(int i) {
// Todo Auto-generated method stub
if (isLeaf(i))
return;
int iL = getLeftChildindex(i);
int ir = getRightChildindex(i);
int minChildindex;
if (heap[iL] < heap[ir])
minChildindex = iL;
else
minChildindex = ir;
if (heap[i] < heap[minChildindex])
return;
swap(i,minChildindex);
heapifyDown(minChildindex);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)