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++ Struct初始化对编程有何影响

    在C++中,struct是一种用户自定义的数据类型,可以用来封装不同类型的数据成员。对于struct的初始化,可以通过两种方式:默认初始化和初始化列表初始化。 默认初...

  • C++ Struct初始化的步骤是什么

    在C++中,使用struct关键字定义结构体,初始化结构体的步骤如下: 定义结构体:首先需要使用struct关键字定义结构体,指定结构体的名称和成员变量。 struct Pers...

  • C++ Struct初始化与类初始化有何区别

    C++ 中的结构体(struct)和类(class)都可以包含成员变量和成员函数,但它们有以下区别: 结构体默认的访问权限是公有的(public),而类默认的访问权限是私有...

  • 怎样才能掌握C++ Struct初始化

    要掌握C++ Struct的初始化,可以遵循以下步骤: 定义结构体:首先定义一个结构体,并在其中声明成员变量。 struct Person { std::string name; int age;
    };...

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

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

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

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

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

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

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

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