亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何手動實現C++堆排序

c++
小樊
81
2024-08-06 20:52:10
欄目: 編程語言

以下是手動實現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函數對數組進行排序,并輸出排序后的結果。

0
嘉峪关市| 蓝山县| 拉萨市| 建阳市| 崇信县| 利川市| 通道| 镇安县| 阿巴嘎旗| 贡觉县| 扶沟县| 寻乌县| 靖边县| 梅河口市| 洪雅县| 林甸县| 新化县| 隆子县| 隆安县| 毕节市| 怀集县| 玉林市| 宜丰县| 上虞市| 北票市| 平遥县| 密云县| 合作市| 南昌市| 建湖县| 周至县| 元谋县| 石城县| 府谷县| 浙江省| 江达县| 武夷山市| 景东| 宝清县| 宜黄县| 花垣县|