初学c语言
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define N 10
void heapsort(int a[N]);
void max(int a[N],int i);
void build(int a[N]);
int heap_size;
void max(int a[N],int i)
{
int largest,l,r;
l=2*i+1;
r=2*i+2;
if(l <=heap_size && a[l]>a[i])
largest =l;
else largest=i;
if(i <=heap_size&& a[r]>a[largest])
largest =r;
if (largest!=i)
a[largest]=a[i];
a[i]=a[largest];
max(a,largest);
}
void heapsort(int a[N])
{
int i;
heap_size=N;
build(a);
for(i=N;i=1;i--)
{
a[i]=a[0];
a[0]=a[i];
heap_size--;
max(a,0);
}
}
void build(int a[N])
{
int i;
for(i=N/2;i=0;i--)
max(a,i);
}
void main()
{
int i,numbers[N];
srand((unsigned)time(0));
for (i = 0; i < N; i++)
numbers[i] = rand();
heapsort(numbers);
printf("排序完成.\n");
for (i = 0;i < N; i++)
printf("%i\n", numbers[i]);
}