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

   2024-10-02 6800
核心提示:以下是手动实现C++的堆排序的代码示例:#include iostream#include vectorvoid heapify(std::vectorint arr, int n, int i) {int

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

#include <iostream>#include <vector>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<int> 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函数对数组进行排序,并输出排序后的结果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号