欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于c++实现最大堆维护maxHeapify的方法

程序员文章站 2022-06-27 22:50:08
来源于算法导论第三版 参考伪代码 c++代码 #include using namespace std; //交换两数大小 void exchange(int...

来源于算法导论第三版

参考伪代码

关于c++实现最大堆维护maxHeapify的方法

c++代码

#include 
using namespace std;
//交换两数大小
void exchange(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}
//左孩子,右孩子
int left(int i)
{
    return i*2;
}
int right(int i)
{
    return i*2+1;
}
//维护最大堆的函数
void maxHeapify(int array[],int size,int i)
{
    int l=left(i),r=right(i);
    int largest=i;
    if(l<=size&&array[l]>array[largest])
        largest=l;
    if(r<=size&&array[r]>array[largest])
        largest=r;
    if(largest!=i)
    {
         exchange(array[i],array[largest]);
         maxHeapify(array,size,largest);
    }
}

int main()
{
    int Array[10]={16,4,10,14,7,9,3,2,8,1};
    cout<<"原始堆为"<

运行结果

关于c++实现最大堆维护maxHeapify的方法