一、用陣列儲存的堆和由此堆上實現的簡單排序。
雖然對排序保證了最壞情況下的o(n log n)的效能,但對於常見輸入,最快的堆排序也比簡單快速排序慢。
1 #include2using
namespace
std;
3int x[100];4
void siftup(intn)5
17}18void siftdown(int
n)25
if(c + 1
<=n)
29if(x[i] <=x[c])
30break;31
swap(x[c] , x[i]);
32 i =c;33}
34}35int
main()
3643
while
(n)50 cout<51return0;
52 }
二、用堆和c++模板實現的優先順序佇列
1 #include2using
namespace
std;
3template
4class
priqueue514
public
:15 priqueue(int
m)
20void
insert(t t)
2627
t extractmin()
38return
t;39}40
};41
42int
main()
4350
for(int i = 0; i < 10 ; i ++)
53 cout<54return0;
55 }
堆的簡單應用
一 大資料的處理 給出n個資料,要求找到並輸出這n個數裡面最大的k個數 思路 利用堆,先建乙個開闢乙個大小為k的陣列,從n個資料裡拿出k個資料放到堆裡面,然後再通過向 下調整法把堆調整為最小堆,此時陣列的第乙個元素就是堆裡面最小的元素,然後在剩下的n k個 資料中依次和堆裡面最小的資料進行比較,若比...
堆的簡單實現
堆資料結構是一種陣列物件,可被視為一顆完全二叉樹 堆結構的二叉樹儲存 最大堆 父 子 最小堆 父 子 如下圖,先建立乙個大堆 下面用 模擬實現乙個大堆 插入 頭刪 include include include using namespace std template class heap heap...
c 對堆的簡單實現
include using namespace std typedef class poinner on class poinner on create int maxsize bool isempty on head bool isfull on head void insert on head,...