思路清楚的最大堆實現

2022-03-05 08:53:28 字數 957 閱讀 4450

class maxheap 

/*** 將陣列轉化為最大堆

*/private void buildheap()

}/**

* 從當前節點開始堆化

** @param i

*/private void heapify(int i) else

if (data[i] > data[biggest])

if (biggest == i) return;

else

}/**

* 獲取右節點的陣列下標

** @param i

* @return

*/private int right(int i)

/*** 獲取左節點的陣列下標

** @param i

* @return

*/private int left(int i)

/*** 交換元素位置

** @param i

* @param j

*/private void swap(int i, int j)

/*** 獲取堆中最大元素,即根元素

** @return

*/public int getroot()

/*** 替換根元素,並重新構建堆

插入乙個新值後:

最關鍵的在於遞迴上公升過程,只要大的公升上去,小的值自然會被替換下沉下來

c 最大堆的實現

在看一些開源元件的原始碼時,會發現很多的底層地方都會使用到最大堆 最小堆 的資料結構,如 在libevent中維護超時事件就用到了最小堆的結構,可見,這種資料結構的重要性。最大堆 根結點的鍵值是所有堆結點鍵值中最大者。最小堆 根結點的鍵值是所有堆結點鍵值中最小者。堆,最重要的乙個過程就是重建的過程,...

最大堆實現,python

堆 heap class maxheap 索引0不用,所以陣列大小應該是 n 1 左節點2i 右節點2i 1,父節點 i 2 def init self self.data 堆陣列容量不知道 self.count len self.data def size self return self.cou...

C 最大堆實現

max heap.h pragma once include template class max heap node heap 最大堆 uint32 t max size 最大儲存數 uint32 t size 儲存數 擴容 void expansion 刪除指定下標節點 void del nod...