CH8_7.C
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. #include <stdio.h>
  2. typedef struct
  3. {  int key;
  4.   /* float info;*/
  5. }JD;
  6. void sift(JD r[],int k,int m)
  7. {  int i,j;
  8.    JD x;
  9.    i=k;  x=r[i]; j=2*i;
  10.    while(j<=m)
  11.    {  if((j<m)&&(r[j].key>r[j+1].key))  j++;
  12.       if(x.key>r[j].key)
  13.       {  r[i]=r[j];
  14.          i=j;
  15.          j*=2;
  16.       }
  17.       else   j=m+1;
  18.    }
  19.    r[i]=x;
  20. }
  21. void heapsort(JD r[],int n)
  22. {  int i;
  23.    JD x;
  24.    for(i=n/2;i>=1;i--)
  25.       sift(r,i,n);
  26.    for(i=n;i>=2;i--)
  27.    {  x=r[1];
  28.       r[1]=r[i];
  29.       r[i]=x;
  30.       sift(r,1,i-1);
  31.    }
  32. }
  33. void main()
  34. {
  35.     static JD r[]={0,49,38,65,97,76,13,27,50};
  36.     int i,n=8;
  37.     heapsort(r,n);
  38.     for(i=n;i>=1;i--)
  39.       printf("%d  ",r[i].key);
  40.     printf("n");
  41. }