您现在的位置是: 首页 > 科技 >

🌟堆排序的C++代码实现🌟

  • 2025-03-21 09:06:09
导读 堆排序是一种基于比较的排序算法,它利用二叉堆这种数据结构进行操作。二叉堆分为最大堆和最小堆两种形式,而堆排序通常指的是基于最大堆的...

堆排序是一种基于比较的排序算法,它利用二叉堆这种数据结构进行操作。二叉堆分为最大堆和最小堆两种形式,而堆排序通常指的是基于最大堆的排序方式。简单来说,堆排序通过构建一个“堆”,然后逐步将最大值(或最小值)取出并调整堆,最终完成排序。

以下是堆排序的C++代码实现:

```cpp

include

using namespace std;

// 调整堆

void heapify(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) {

swap(arr[i], arr[largest]);

heapify(arr, n, largest);

}

}

// 堆排序主函数

void heapSort(int arr[], int n) {

// 构建最大堆

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

heapify(arr, n, i);

// 一个个从堆顶取出元素

for (int i = n - 1; i >= 0; i--) {

swap(arr[0], arr[i]);

heapify(arr, i, 0);

}

}

int main() {

int arr[] = {12, 11, 13, 5, 6, 7};

int n = sizeof(arr) / sizeof(arr[0]);

cout << "排序前: ";

for (int i = 0; i < n; i++)

cout << arr[i] << " ";

cout << endl;

heapSort(arr, n);

cout << "排序后: ";

for (int i = 0; i < n; i++)

cout << arr[i] << " ";

cout << endl;

return 0;

}

```

💡运行这段代码后,你会发现数组已经按照从小到大的顺序排列好了!堆排序的时间复杂度为O(n log n),是一种非常高效的排序方法。🚀如果你对算法感兴趣,不妨尝试修改数组中的数值,观察排序结果的变化哦!✨

免责声明:本文由用户上传,如有侵权请联系删除!
Top