堆排序

 

 

算法2:#

复制代码
 1 void Swap( ElementType *a, ElementType *b )
 2 {
 3     ElementType t = *a;
 4     *a = *b;
 5     *b = t;
 6 }
 7 
 8 void PercDown( ElementType A[], int p, int N )
 9 {
10     /* 改编代码4.24的PercDown( MaxHeap H, int p )    */
11     /* 将N个元素的数组中以A[p]为根的子堆调整为最大堆 */
12     int Parent, Child;
13     ElementType X;
14 
15     X = A[p]; /* 取出根结点存放的值 */
16     for( Parent = p; (Parent*2+1) < N; Parent = Child )
17     {
18         Child = Parent * 2 + 1;
19         if( (Child != N-1) && (A[Child] < A[Child+1]) )
20             ++Child;    /* Child指向左右子结点的较大者 */
21         if( A[Child] > X )
22             A[Parent] = A[Child];   /* 下滤X */
23         else     /* 找到了合适位置 */
24             break;
25     }
26     A[Parent] = X;
27 }
28 
29 void HeapSort( ElementType A[], int N )
30 {
31     /* 堆排序 */
32     int i;
33 
34     for ( i=N/2-1; i>=0; i-- )/* 建立最大堆 */
35         PercDown( A, i, N );
36 
37     for ( i=N-1; i>0; i-- )
38     {
39         /* 删除最大堆顶 */
40         Swap( &A[0], &A[i] ); 
41         PercDown( A, 0, i );
42     }
43 }
复制代码

 

 

 

 

 

posted @   拾月凄辰  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
主题色彩