C heap堆的相關操作及跟蹤除錯案例

2021-09-24 21:41:27 字數 1115 閱讀 8411

#include//標頭檔案

make_heap() //建堆,最大值在所給範圍的最前面,其他位置不確定

pop_heap() //將堆頂(所給範圍最前面)元素移到所給範圍的最後,並將餘下的最大的元素放在最前面

pop_back() //將所給範圍的最後乙個元素刪除

push_back() //在所給範圍的末尾加入新的元素

push_heap() //調整元素的位置,重新構建堆,即將最大元素放在第一位

sort_heap() //將堆中元素從小到大排序

使用vs code進行單步除錯,可以觀察res的vector的變化過程。

**

解決改題目,提供了如下兩種方法:

方式1:使用冒泡法

方式2:使用堆排序

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

//冒泡法得出最小的k個不相同的數字

class solution

if(input.size() < k)

for(int i = 0; ii; j--)

}if(i>1 && input[i] == input[i-1]) //有相同的數字,則算作一種類別

}for(int i = 0; igetleastnumbers_solution(vectorinput, int k)

vectorres(input.begin(), input.begin()+k);

// auto cmp = (const int x, const int y) ;

//建堆 最大值在所給範圍的最前面,其他位置不確定

make_heap(res.begin(), res.end());

for(int i = k; iinput = ;

vectorresult;

result = s.getleastnumbers_solution(input, 3);

for(int i = 0; isystem("pause");

return 0;

}

堆的實現及相關操作

堆 是一種特殊的完全二叉樹 大堆 左右孩子結點均小於父親結點 小堆 左右孩子結點均大於父親結點 用順序表來表示堆 typedef int hpdatatype typedef struct heap heap 堆的建立 void heapcreat heap hp,hpdatatype array,...

四 c 中的演算法 排序及相關操作 堆操作

堆 是一種組織序列元素的方式。堆的內部資料結構是二叉樹。兩大性質 1.堆的第乙個元素通常是最大的元素 2.能夠在對數時間內增加或移除乙個元素 堆的操作演算法 push heap pop heap sort heap make heap 等等 函式模型 template class randomit ...

堆相關的一些操作

include includeusing namespace std const int maxn 100 heap為堆,n為元素個數 int heap maxn n 10 對heap陣列在 low,high 範圍進行向下調整 其中low為欲調整結點的陣列下標,high一般為堆的最後乙個元素的陣列下...