堆排序实现

Posted susidian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序实现相关的知识,希望对你有一定的参考价值。

 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 }

 

以上是关于堆排序实现的主要内容,如果未能解决你的问题,请参考以下文章

选择排序(简单选择排序堆排序的算法思想及代码实现)

排序--08---堆排序

python代码实现堆排序

算法-java代码实现堆排序

堆排序及代码实现

堆排序算法的实现