王道堆排序第五题
#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;
}
保持好奇心!

浙公网安备 33010602011771号