From bfb0e458c878d20a949a5273ece9fd7e4d46e6c2 Mon Sep 17 00:00:00 2001 From: pfka9ogtp <2376896771@qq.com> Date: Sat, 19 Feb 2022 17:59:33 +0800 Subject: [PATCH] ADD file via upload --- 6.堆排序.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 6.堆排序.c diff --git a/6.堆排序.c b/6.堆排序.c new file mode 100644 index 0000000..d0b8539 --- /dev/null +++ b/6.堆排序.c @@ -0,0 +1,87 @@ +#include +int h[ 101];//������Ŷѵ����� +int n;//�����洢����Ԫ�صĸ�����Ҳ���ǶѵĴ�С + +//���������������������е�����Ԫ�ص�ֵ +void swap(int x,int y) +{ + int t; + t=h[ x]; + h[ x]=h[ y]; + h[ y]=t; +} + +//���µ������� +void siftdown(int i) //����һ����Ҫ���µ����Ľ����i�����ﴫ��1�����ӶѵĶ��㿪ʼ���µ��� +{ + int t,flag=0;//flag��������Ƿ���Ҫ�������µ��� + //��i����ж��ӵ�ʱ����ʵ������������ӵ�����£���������Ҫ����������ʱ��ѭ����ִ�� + while( i*2<=n && flag==0 ) + { + //�����ж�����������ӵĹ�ϵ������t��¼ֵ��С�Ľ���� + if( h[ i] > h[ i*2] ) + t=i*2; + else + t=i; + //��������Ҷ��ӵ�����£��ٶ��Ҷ��ӽ������� + if(i*2+1 <= n) + { + //����Ҷ��ӵ�ֵ��С�����½�С�Ľ���� + if(h[ t] > h[ i*2+1]) + t=i*2+1; + } + //���������С�Ľ���Ų����Լ���˵���ӽ�����бȸ�����С�� + if(t!=i) + { + swap(t,i);//�������ǣ�ע��swap������Ҫ�Լ���д + i=t;//����iΪ�ղ����������Ķ��ӽ��ı�ţ����ڽ������������µ��� + } + else + flag=1;//���˵����ǰ�ĸ�����Ѿ��������ӽ�㶼ҪС�ˣ�����Ҫ�ڽ��е����� + } +} + +//�����ѵĺ��� +void creat() +{ + int i; + //�����һ����Ҷ��㵽��1��������ν������ϵ��� + for(i=n/2;i>=1;i--) + { + siftdown(i); + } +} + +//ɾ������Ԫ�� +int deletemax() +{ + int t; + t=h[ 1];//��һ����ʱ������¼�Ѷ����ֵ + h[ 1]=h[ n];//���ѵ����һ���㸳ֵ���Ѷ� + n--;//�ѵ�Ԫ�ؼ���1 + siftdown(1);//���µ��� + return t;//����֮ǰ��¼�Ķѵö�������ֵ +} + +int main() +{ + int i,num; + //�������ĸ��� + scanf("%d",&num); + + for(i=1;i<=num;i++) + scanf("%d",&h[ i]); + n=num; + + //���� + creat(); + + + //ɾ������Ԫ�أ�����ɾ��n�Σ���ʵҹ���ǴӴ�С��������� + for(i=1;i<=num;i++) + printf("%d ",deletemax()); + + getchar(); + getchar(); + return 0; +}