117.info
人生若只如初见

如何手动实现C++堆排序

以下是手动实现C++的堆排序的代码示例:

#include 
#include 

void heapify(std::vector<int>& arr, int n, int i) {
    int largest = i;
    int left = 2*i + 1;
    int right = 2*i + 2;

    if (left < n && arr[left] > arr[largest])
        largest = left;

    if (right < n && arr[right] > arr[largest])
        largest = right;

    if (largest != i) {
        std::swap(arr[i], arr[largest]);
        heapify(arr, n, largest);
    }
}

void heapSort(std::vector<int>& arr) {
    int n = arr.size();

    for (int i = n/2 - 1; i >= 0; i--)
        heapify(arr, n, i);

    for (int i = n-1; i >= 0; i--) {
        std::swap(arr[0], arr[i]);
        heapify(arr, i, 0);
    }
}

int main() {
    std::vector arr = {12, 11, 13, 5, 6, 7};

    heapSort(arr);

    std::cout << "Sorted array is: ";
    for (int i = 0; i < arr.size(); i++)
        std::cout << arr[i] << " ";
    std::cout << std::endl;

    return 0;
}

在以上代码中,我们首先定义了一个heapify函数用于调整堆,然后定义了一个heapSort函数用于进行堆排序。在main函数中,我们初始化一个包含一些整数的数组,然后调用heapSort函数对数组进行排序,并输出排序后的结果。

未经允许不得转载 » 本文链接:https://www.117.info/ask/feec1AzsIAQ5VAFI.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;
    };...

  • C++堆排序算法原理

    堆排序是一种基于完全二叉树的排序算法,其原理如下: 构建最大堆或最小堆:首先将待排序的序列构建成一个最大堆或最小堆。最大堆表示节点的值大于其子节点的值,...

  • 如何在多线程中使用stol

    在多线程中使用std::stol函数时,需要确保线程安全性。可以使用互斥锁(mutex)来保护std::stol函数的调用,以确保在多个线程同时访问时不会出现问题。
    以下...

  • stol与自定义类型转换的结合

    在 Rust 中,可以通过实现 From trait 和 Into trait 来实现 stol 与自定义类型之间的转换。
    首先,让我们定义一个自定义类型 MyType:
    struct MyType...

  • stol与浮点数转换的关系

    在计算机中,stol函数用于将字符串转换为长整型数值,浮点数则是一种具有小数部分的数值类型。因此,stol函数与浮点数转换之间的关系是,stol函数将字符串转换为...