• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C语言实现的堆排序代码

OC/C/C++ 水墨上仙 1401次浏览

C语言实现的堆排序代码

#include<stdio.h>
void restoreHup(int*,int);
void restoreHdown(int*,int,int);
void main()
{
        int a[20],n,i,j,k;
        printf("
Enter the number of elements to sort : ");
        scanf("%d",&n);
        printf("
Enter the elements : 
");
        for(i=1;i<=n;i++){
                scanf("%d",&a[i]);
                restoreHup(a,i);
        }
        j=n;
        for(i=1;i<=j;i++)
        {
                int temp;
                temp=a[1];
                a[1]=a[n];
                a[n]=temp;
                n--;
                restoreHdown(a,1,n);
        }
        n=j;
        printf("
Here is it...
");
        for(i=1;i<=n;i++)
                printf("%4d",a[i]);
}
void restoreHup(int *a,int i)
{
        int v=a[i];
        while((i>1)&&(a[i/2]<v))
        {
                a[i]=a[i/2];
                i=i/2;
        }
        a[i]=v;
}
void restoreHdown(int *a,int i,int n)
{
        int v=a[i];
        int j=i*2;
        while(j<=n)
        {
                if((j<n)&&(a[j]<a[j+1]))
                        j++;
                if(a[j]<a[j/2]) break;
                a[j/2]=a[j];
                j=j*2;
        }
        a[j/2]=v;
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言实现的堆排序代码
喜欢 (0)
加载中……