阅读量: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
函数对数组进行排序,并输出排序后的结果。