最小堆的實現

2021-05-23 04:30:55 字數 671 閱讀 2118

/**

這邊實現的是最小堆,最小堆是這樣定義的,首先堆是一棵完全二叉樹,每乙個節點都有乙個權值,滿足的條件是,父節點的權值總是大於等於子節點的權值

**/#include

using namespace std;

//最小堆類的定義如下

template

class minheap

}; template

void minheap::makeheap(int maxsize)

/**向堆中插入乙個元素,基本的演算法是這樣的,首先將這個元素新增到陣列的最後,然後沿著樹向根方向一直查詢直到這個元素應該存放的位置為止

**/template

minheap& minheap::insert(t & t)          

nodes [index ] = t;

return * this; }

/**

刪除的過程和插入的過程類似,只不過是逆過來的,從根向葉方向判斷,直到找到了合適的位置。

**/template

minheap& minheap::del(t&t )

nodes [index] = tem;

return * this; }

int main()

return 0 ; }

C 最小堆實現

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

priority queue的實現最小堆的用法

priority queue呼叫 stl裡面的make heap pop heap push heap 演算法實現,也算是堆的另外一種形式。先寫乙個用 stl 裡面堆演算法實現的與真正的stl裡面的 priority queue用法相似的priority queue,以加深對 priority qu...

優先佇列的實現(最小堆)

定義上浮函式和下浮函式,對每一次加入的新節點,重新維護最小堆 public class priorityminqueue public priorityminqueue 初始化優先佇列 param capacity public priorityminqueue int capacity else ...