1.大顶堆和小顶堆
2.层序遍历
3.代码
void Swap(int *a, int *b)
{
int temp = 0;
temp = *a;
*a = *b;
*b = temp;
}
/*对某个非叶子结点i构建大顶堆堆*/
void HeapAdjust(int *s,int i,int n)
{
int temp=0,j=0;
temp=s[i];
for(j=2*i;j<=n;j*=2)
{
if(j<n&&s[j]<s[j+1])
j++;
if(temp>=s[j]) break;
s[i]=s[j];
i=j;
}
s[i]=temp;
}
void HeapSort(int *s,int n)
{
int i=0;
for(i=n/2;i>0;i--)
HeapAdjust(s,i,n);
for(i=n;i>1;i--)
{
Swap(&s[1],&s[i]);
HeapAdjust(s,1,i-1);
}
}