117.info
人生若只如初见

C++ STL中的堆排序实现

以下是使用C++ STL中的堆排序算法实现堆排序的示例代码:

#include 
#include 
#include 

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe068AzsIAQ5VAVQ.html

推荐文章

  • c# winform组件 怎样集成

    在C# WinForms应用程序中集成组件通常涉及以下几个步骤: 添加引用: 首先,确保你已经安装了所需的组件。例如,如果你想要集成一个第三方库,你需要将该库的DLL...

  • c# winform组件 怎样提高效率

    要提高C# WinForms应用程序的效率,可以从多个方面入手,包括优化绘图过程、使用异步操作、合理设置控件属性等。以下是一些具体的优化策略:
    优化绘图过程 ...

  • c# winform组件 怎样自定义

    在C#中,要自定义WinForms组件,您需要创建一个继承自现有控件的新类,并重写其构造函数、事件处理程序和其他相关方法。以下是一个简单的示例,说明如何创建一个...

  • c# winform组件 怎样选择合适

    在C# WinForms应用程序开发中,选择合适的组件对于构建高效、用户友好的界面至关重要。以下是一些选择合适组件的建议:
    控件选择 根据需求选择:选择控件时...

  • 堆排序在大数据集中的应用

    堆排序在大数据集中的应用主要体现在以下几个方面: 大数据集的排序:堆排序适合对大数据集进行排序,因为其时间复杂度为O(nlogn),效率高,且不需要额外的空间开...

  • 堆排序的空间复杂度分析

    堆排序的空间复杂度分析如下:
    堆排序的空间复杂度取决于堆的建立过程中所需要的额外空间,即堆化所需要的空间。在堆排序中,通常会使用一个辅助数组来存储...

  • 堆排序与快速排序的比较

    堆排序和快速排序都是常用的排序算法,它们之间有一些相似之处,也有一些不同之处。 时间复杂度: 堆排序的时间复杂度为O(nlogn),其中n为待排序元素的个数。

  • hypot与其他数学库函数的配合

    在使用hypot函数时,可以配合其他数学库函数来进行更复杂的数学运算。例如,可以结合sin、cos、tan等三角函数来进行三角形的计算;也可以结合sqrt函数来计算两点...