RenHao

HeapSort

Sep 24th, 2015
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.52 KB | None | 0 0
  1. void adjust(int *ary,int i,int n){
  2.     int x=ary[i];
  3.     int j=2*i;
  4.     while(j<=n){
  5.         if(j<n)
  6.             if(ary[j]<ary[j+1])
  7.                 j++;
  8.         if(x>=ary[j])
  9.             break;
  10.         else{
  11.             ary[j/2]=ary[j];
  12.             j*=2;
  13.         }
  14.     }
  15. }
  16. void swap(int *a,int *b){*a^=*b;*b^=*a;*a^=*b;}
  17. void hsort(int *ary,int n){
  18.     int i;
  19.     for(i=n/2;i>0;i--)
  20.         adjust(ary, i, n);
  21.     for(i=1;i<=n;i++){
  22.         swap(&ary[1],&ary[n-i+1]);
  23.         adjust(ary, 1, n-i);
  24.  
  25.     }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment