以下是使用C++ STL中的堆排序算法實現堆排序的示例代碼:
#include <iostream>
#include <vector>
#include <algorithm>
void heapSort(std::vector<int>& arr) {
std::make_heap(arr.begin(), arr.end()); // 創建最大堆
// 依次將最大堆的根節點取出并放到數組末尾
for (int i = arr.size() - 1; i > 0; i--) {
std::pop_heap(arr.begin(), arr.begin() + i + 1);
}
}
int main() {
std::vector<int> arr = {12, 11, 13, 5, 6, 7};
std::cout << "Array before sorting:\n";
for (int num : arr) {
std::cout << num << " ";
}
heapSort(arr);
std::cout << "\nArray after sorting:\n";
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}
在上面的示例中,我們使用std::make_heap
函數創建一個最大堆,然后使用std::pop_heap
函數依次將最大堆的根節點取出并放到數組末尾,最終完成堆排序。最后輸出排序前和排序后的數組。