1 實現堆結構

2021-06-20 09:55:05 字數 1022 閱讀 6335

總時間限制: 

3000ms 

記憶體限制: 

65535kb

描述 定義乙個陣列,初始化為空。在陣列上執行兩種操作:

1、增添1個元素,把1個新的元素放入陣列。

2、輸出並刪除陣列中最小的數。

使用堆結構實現上述功能的高效演算法。

輸入第一行輸入乙個整數t,代表測試資料的組數。

對於每組測試資料,第一行輸入乙個整數n,代表操作的次數。

每次操作首先輸入乙個整數type。

當type=1,增添操作,接著輸入乙個整數u,代表要插入的元素。

當type=2,輸出刪除操作,輸出並刪除陣列中最小的元素。

1<=n<=100000。

輸出每次刪除操作輸出被刪除的數字。

樣例輸入

2

51 1

1 21 322

41 5

1 11 7

2

樣例輸出

1

21

提示每組測試資料的複雜度為o(nlgn)的演算法才能通過本次,否則會返回tle(超時)

需要使用最小堆結構來實現本題的演算法

用來熟悉堆結構。

#include#include#include#include#include#includeusing namespace std;

int a[100010];

int size;

void siftdown( int cike )//向下移動

else break;

}a[i] = temp;//回填

}void siftup( int cike )

a[temdian] = temp;//回填

}void insert( int t)

void del( )

int main()

else}}

return 0;

}

4078 實現堆結構

總時間限制 3000ms 單個測試點時間限制 1000ms 記憶體限制 65536kb 描述 定義乙個陣列,初始化為空。在陣列上執行兩種操作 1 增添1個元素,把1個新的元素放入陣列。2 輸出並刪除陣列中最小的數。使用堆結構實現上述功能的高效演算法。輸入 第一行輸入乙個整數n,代表操作的次數。每次操...

C 堆結構 陣列實現

要說最大堆和最小堆,就得先知道最大樹和最小樹。每個結點的值都大於 小於 或等於其子節點 如果有的話 值的樹,就叫最大 最小 樹。最大堆 最小堆 是最大 最小 完全樹。由於堆是完全二叉樹,所以可以用公式化描述,用一維陣列來有效的描述堆結構。利用二叉樹的性質 如果對一棵有n個結點的完全二叉樹的結點按層序...

C 堆結構 陣列實現

要說最大堆和最小堆,就得先知道最大樹和最小樹。每個結點的值都大於 小於 或等於其子節點 如果有的話 值的樹,就叫最大 最小 樹。最大堆 最小堆 是最大 最小 完全樹。由於堆是完全二叉樹,所以可以用公式化描述,用一維陣列來有效的描述堆結構。利用二叉樹的性質 如果對一棵有n個結點的完全二叉樹的結點按層序...