最大堆和最小堆c++
在C++中,可以使用標準庫中的priority_queue
來實現最大堆和最小堆。
對於最大堆,可以使用priority_queue
的greater
比較器來指定元素之間的比較方式為大小,即按照元素的值從大到小排序。
對於最小堆,同樣可以使用priority_queue
的默認比較器來按照元素的值從小到大排序。
下面是一個使用C++實現最大堆的示例代碼:
#include <iostream>
#include <queue>
using namespace std;
int main() {
// 創建一個最大堆,使用greater比較器指定元素大小排序
priority_queue<int, vector<int>, greater<int>> maxHeap;
// 向最大堆中插入元素
maxHeap.push(3);
maxHeap.push(1);
maxHeap.push(4);
// 輸出最大堆中的元素
cout << "Max Heap: ";
while (!maxHeap.empty()) {
cout << maxHeap.top() << " ";
maxHeap.pop();
}
cout << endl;
return 0;
}
輸出結果為:Max Heap: 4 3 1。
同樣地,可以使用類似的方法來實現最小堆。以下是使用C++實現最小堆的示例代碼:
#include <iostream>
#include <queue>
using namespace std;
int main() {
// 創建一個最小堆,使用默認比較器指定元素從小到大排序
priority_queue<int, vector<int>> minHeap;
// 向最小堆中插入元素
minHeap.push(3);
minHeap.push(1);
minHeap.push(4);
// 輸出最小堆中的元素
cout << "Min Heap: ";
while (!minHeap.empty()) {
cout << minHeap.top() << " ";
minHeap.pop();
}
cout << endl;
return 0;
}
輸出結果為:Min Heap: 1 3 4。