c语言堆排序,输出不了结果
#include <stdio.h>
#include <stdlib.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void heapify(int arr[],int n,int i)
{
int low=i;
int lchild=i*2+1;
int rchild=i*2+2;
if(lchild<n&&arr[lchild]<arr[low])
low=lchild;
if(rchild<n&&arr[rchild]<arr[low])
low=rchild;
if(low!=i)
swap(&arr[i],&arr[low]);
heapify(arr,n,low);
}
void B_heap(int arr[],int n)
{
for(int i=n/2-1;i>=0;i--)
{
heapify(arr,n,i);
}
for(int i=n-1;i>0;i--)
{
swap(&arr[0],&arr[i]);
heapify(arr,i,0);
}
}
int main()
{
int arr[8]={6,11,12,16,14,15,10};
int n=7;
B_heap(arr,n);
for(int i=0;i<n;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}