2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
==
是比較運(yùn)算符。如果要分配值,則應(yīng)使用=
運(yùn)算符:
A[i] = A[largest];

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)錯(cuò)誤信息,問題在于 maxHeapify 的參數(shù) A 是一個(gè)整數(shù)值。您需要將參數(shù) A 作為數(shù)組傳遞。
public void maxHeapify(int i, int[] A) {
int largest = i;
int l = left(i);
int r = right(i);
if(l < A.length && A[l] > A[largest])
largest = l;
if(r < A.length && A[r] > A[largest])
largest = r;
if(largest != i)
{
int tmp = A[i];
A[i] = A[largest];
A[largest] = tmp;
maxHeapify(largest, A);
}
}
我在下面的代碼中測試了上面的 maxHeapify。
public class HeapMain {
public static void main(String[] args) {
// Note: ignore the value at index 0
int[] A = new int[]{-1, 3, 9, 10, 4, 2, 33, 5};
Heap heap = new Heap(A.length);
for (int i = heap.parent(A.length - 1); i > 0; i--) {
heap.maxHeapify(i, A);
}
// You will get => 33 9 10 4 2 3 5
for (int i = 1; i < A.length; i++) {
System.out.print(A[i]);
System.out.print(" ");
}
System.out.println();
}
}
注意:parent、left 和 right 方法假設(shè)數(shù)組中堆的節(jié)點(diǎn)是從索引 1 開始保存的。
以下 URL 可能會(huì)有所幫助。
https://www.youtube.com/watch?v=ixdWTKWSz7s
添加回答
舉報(bào)