/***********************************************************************************
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。
堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:
即子结点的键值或索引总是小于(或者大于)它的父节点。
通常堆是通过一维数组来实现的。在起始数组为 0 的情形中:
父节点i的左子节点在位置 (2*i+1);
父节点i的右子节点在位置 (2*i+2);
子节点i的父节点在位置 floor((i-1)/2);
堆的操作
在堆的数据结构中,堆中的最大值总是位于根节点。堆中定义以下几种操作:
最大堆调整(Max_Heapify):将堆的末端子结点作调整,使得子结点永远小于父结点
创建最大堆(Build_Max_Heap):将堆所有数据重新排序
注:堆排序不是一种稳定排序。
*************************************************************************************/
#include <cmath>
#include<cstdlib>
#include<time.h>
#include<cstdio>
#include<iostream>
using namespace std;
//产生随机数组
void Random(int a[],int n)
{
int i=0;
srand( (unsigned)time( NULL ) );
while(i<n)
{
a[i++]=rand();
}
}
void print(int a[], int len)
{
int i;
堆排序 完整代码与详细注释 C++语言实现
最新推荐文章于 2024-06-22 16:22:55 发布
本文介绍了堆排序算法,包括最大堆的概念、操作以及C++实现。通过详细注释的完整代码展示了如何进行最大堆调整、创建最大堆以及堆排序的过程。
摘要由CSDN通过智能技术生成