ADD file via upload

堆排序
pqz4hix59 4 years ago
parent 45776364a9
commit b2d713b278

@ -0,0 +1,29 @@
#include<stdio.h>
int n,num[1000010];
void down(int x)
{
int y=x;
if(x*2<=n&&num[x*2]<num[y]) y=x*2;
if(x*2+1<=n&&num[x*2+1]<num[y]) y=x*2+1;
if(y!=x)
{
int a=num[x];
num[x]=num[y];
num[y]=a;
down(y);
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
for(int i=n/2;i;i--) down(i);
while(n)
{
printf("%d ",num[1]);
num[1]=num[n--];
down(1);
}
return 0;
}
Loading…
Cancel
Save