第1个回答 2013-04-15
//复杂度O(n)
//大根堆
bool isHeap(int data, int n) {
int i, j, k;
for(i = 0, j = 1;j < n;i++, j = 2*i+1) {
k = data[j];
if(j+1 < n && data[j+1] > data[j]) k = data[j+1];
if(data[i] < k) return false;
}
return true;
}
//小根堆
bool isHeap(int data, int n) {
int i, j, k;
for(i = 0, j = 1;j < n;i++, j = 2*i+1) {
k = data[j];
if(j+1 < n && data[j+1] < data[j]) k = data[j+1];
if(data[i] > k) return false;
}
return true;
}