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

avatar
作者
猴君
阅读量:0

以下是手动实现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函数对数组进行排序,并输出排序后的结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!