堆排序算法的实现

#include <stdio.h> 
void adjust(int *list,const int root,const int n); 
void HeapSort(int *list,const int n) 
{ 
int i=0; 
for(i=n/2;i>=1;i--) 
adjust(list,i-1,n); 
int t=list[n]; 
list[n]=list[0]; 
list[0]=t; 
if(n>1) 
HeapSort(list,n-1); 
else 
{ 
int t=list[1]; 
list[1]=list[0]; 
list[0]=t; 
} 
} 
void adjust(int *list,const int root,const int n) 
{ 
int e=list[root]; 
int k=e,j=0; 
for(j=2*root;j<=n;j*=2) 
{ 
if(j<n) 
if(list[j]<list[j+1]) 
j++; 
if(k>=list[j]) 
break; 
list[j/2]=list[j]; 
} 
list[j/2]=e; 
} 
int main(int argc,char **argv) 
{ 
int i=0; 
int src[10]={26,5,77,1,61,11,59,15,48,19}; 
HeapSort(src,9); 
i=0; 
while(i<10) 
{ 
printf("%d,",src[i]); 
i++; 
} 
}  
 
 
 

 

你可能感兴趣的:(算法,J#)