C++ STL中的堆排序实现

avatar
作者
猴君
阅读量:0

以下是使用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函数依次将最大堆的根节点取出并放到数组末尾,最终完成堆排序。最后输出排序前和排序后的数组。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!