#include<stdio.h>
#include<stdlib.h>
max_heapiry(int *a,int i,int size)
{
int largest;
int temp;
int left=2*i;
int right=2*i+1;
if(left<=size&&a[left]>a[i])
largest=left;
else
largest=i;
if(right<size&&a[right]>a[largest])
largest=right;
if(largest!=i){
temp=a[i];
a[i]=a[largest];
a[largest]=temp;
max_heapiry(a,largest,size);
}
}
buld_max_heap(int *a,int size)
{
int i=size/2;
for(i;i>=1;i--)
max_heapiry(a,i,size);
}
heapsort(int *a,int size)
{
int i;
int temp;
buld_max_heap(a,size);
for(i=size;i>=2;i--)
{
temp=a[1];
a[1]=a[i];
a[i]=temp;
max_heapiry(a,1,i-1);
}
}
int main()
{
int i;
int a[]={0,1,9,16,10,4,14,2,8,3,7};
buld_max_heap(a,10);
for(i=1;i<=10;i++)
printf("%d ",a[i]);
heapsort(a,10);
printf("\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
从1开始····
heapsort
最新推荐文章于 2022-08-20 23:22:09 发布