王道堆排序第五题

#include<iostream>
using namespace std;


bool IsMinHeap(int a[],int n)
{
    int len = n -1;
    if(n % 2 == 0)
    {
        if(a[len / 2] > a[len])
        {
            return false;
        }
        for(int i = len / 2 - 1; i >= 0 ;i--)
        {
            if(a[i] > a[2 * i + 1] || a[i] > a[2 * i + 2])
            {
                return false;
            }
        }
    }
    else
    {
        for(int i = len / 2 - 1; i >= 0 ;i--)
        {
            if(a[i] > a[2 * i + 1] || a[i] > a[2 * i + 2])
            {
                return false;
            }
        }
    }
    return true;
}

int main()
{
    int a[]={1,5,6,7,8};
    int n = sizeof(a) / sizeof(a[0]);
    cout<<n<<endl;
    if(IsMinHeap(a,n))
        cout<<"is min heap"<<endl;
    else 
        cout<<"not a min heap"<<endl;
    system("pause");
	return 0;
}
posted @ 2020-07-10 16:37  Akmf's_blog  阅读(87)  评论(0)    收藏  举报