最大堆和最小堆c++

在C++中,可以使用標準庫中的priority_queue來實現最大堆和最小堆。

對於最大堆,可以使用priority_queuegreater比較器來指定元素之間的比較方式為大小,即按照元素的值從大到小排序。

對於最小堆,同樣可以使用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。