首页 > 编程语言 > 详细

堆排序实现

时间:2018-11-24 20:50:30      阅读:206      评论:0      收藏:0      [点我收藏+]
 1 void AdjustHeap(int *a,int n,int cur)
 2 {
 3 int i,tmp;
 4 for(i=2*cur+1;i<n;i=i*2+1)
 5 {
 6 if(i<n-1 && a[i]<a[i+1])
 7 ++i;
 8 if(a[cur]>a[i])
 9 break;
10 tmp = a[cur];
11 a[cur] = a[i];
12 a[i] = tmp;
13 cur = i;
14 }
15 }
16 
17 void HeapSort(int *a,int n)
18 {
19 int i,j,tmp;
20 for(i=(n-2)/2;i>=0;--i)
21 AdjustHeap(a,n,i);
22 
23 for(j=n-1;j>0;--j)
24 {
25 tmp = a[0];
26 a[0] = a[j];
27 a[j] = tmp;
28 AdjustHeap(a,j,0);
29 }
30 }

 

堆排序实现

原文:https://www.cnblogs.com/susidian/p/10013138.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!