優先佇列 大頂堆,小訂堆

2021-08-09 10:32:00 字數 876 閱讀 3935

什麼是堆(heap)

優先佇列(priority queue):特殊的」佇列」,取出元素的順序優先權的大小,而不是元素在佇列的先後順序;

1.使用完成二叉樹;

2.陣列表述;

堆中的路徑(25 分)

將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h[i]到根結點的路徑。

輸入格式:

每組測試第1行包含2個正整數n和m(≤1000),分別是插入元素的個數、以及需要列印的路徑條數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。最後一行給出m個下標。

輸出格式:

對輸入中給出的每個下標i,在一行中輸出從h[i]到根結點的路徑上的資料。數字間以1個空格分隔,行末不得有多餘空格。

輸入樣例:

5 3

46 23 26 24 10

5 4 3

輸出樣例:

24 23 10

46 23 10

26 10

#include 

#include

#define maxn 1000

#define minh -10001

int h[maxn],size;

void create()

void insert(int x)

h[i] = x;

}int main()

for(int i=0;iscanf("%d",&input);

printf("%d",h[input]);

while(input>1)

printf("\n");

}return

0;}

大頂堆小頂堆

堆通常是乙個可以被看做一棵完全二叉樹的陣列物件 如果對一棵有n個結點的完全二叉樹的結點按層序編號 從第1層到第 1層,每層從左到右 則對任一結點i 1 i n 有 1 如果i 1,則結點i無雙親,是二叉樹的根 如果i 1,則其雙親是結點。2 如果2i n,則結點i為葉子結點,無左孩子 否則,其左孩子...

堆排(大頂堆,小頂堆)

分類 資料結構 演算法相關 2009 10 15 12 26 2289人閱讀收藏 舉報汗,別人都說大小頂堆只是改改大於號的問題,可我的 從大頂堆只改動大於號調整為小頂堆竟然越界樂,掣肘!後來幾經更改才發現是傳參的問題 見 看來大頂堆改小頂堆不是 亦或是我rp出點問題?搞笑的是 磚頭 c b 竟然對越...

資料結構 佇列 雙端佇列 小頂堆 大頂堆

queue 佇列 特點 先進先出 q.push num 從後面進佇列 q.pop 從前面出佇列 q.front 讀取佇列最前面的元素 q.back 讀取佇列最後面的元素 deque 雙端佇列 特點 兩端都可以出進 q.push front num 從前面進佇列 q.push back num 從後面...