当前位置:网站首页>Detailed explanation of heap sort code
Detailed explanation of heap sort code
2022-07-04 22:38:00 【@Landscape post yuan】
Figure displaying the heap
• The heap is a complete binary tree ;
• The value of each node in the heap must be greater than or equal to ( Or less than or equal to ) Of each node in its subtree value .
The left side is the big top pile The right side is a small top pile
The following code establishes the big top heap
#include "stdio.h"
# define MAXSIZE 10
typedef struct {
int r[MAXSIZE]; /* use On save Store want row order Count Group */
int length ; /* use On remember record along order surface Of Long degree */
}SqList ;
void swap ( SqList *L, int i, int j){ /* hand over in L in Count Group r Of Next mark by i and j Of value */
int temp = L->r[i];
L->r[i] = L->r[j];
L->r[j] = temp;
}
void HeapAdjust(SqList* L,int s,int m){ /* Structure L The location of , The location of the first judgment node s, The number of nodes m */
int temp , j;
temp = L->r[s]; /* Pass to temp Location s Value on */
for (j = 2*s;j <= m;j *= 2) { /* Compare positions s And its two children */
if (j < m && L->r[j] < L->r[j+1]) /* First find s My two children , Find out the larger value of children */
++j; /* j The following table shows older children */
if ( temp >= L->r[j]) /* If temp Big be The current structure remains unchanged */
break ; /* r[c] Should be insert Enter into stay position Set up s On */
L->r[s] = L->r[j]; /* Otherwise, assign the maximum value to s position */
s = j; /* by L->r[s] = temp Do matting */
}
L->r[s] = temp; /* The last step */
}
void HeapSort(SqList* L){ /* For the sequence table L Make a heap sort */
int i;
for (i = L->length/2; i > 0; i--) /* hold L in Of r structure build become One individual Big The top Pile up */
HeapAdjust (L,i,L->length) ; /* Afferent structure L The location of The location of the first judgment node i The number of nodes length */
for(i=0;i<MAXSIZE;i++){ /* View the result after heap */
printf("%d ",L->r[i]);
}
printf("\n");
for (i = L->length; i > 1; i--) {
swap (L, 1 , i) ; /* Put the maximum value at the top of the heap at the end of the array ,i-1 Then he won't participate in the heap process */
HeapAdjust (L, 1 , i-1); /* Structure L The location of , Location of the first node s, The number of nodes m */
for(int j=0;j<MAXSIZE;j++){ /* Check out the process */
printf("%d--",L->r[j]);
}
printf("\n");
}
}
int main(){
int i;
int a[9]={50,10,90,30,70,40,80,60,20}; /* initialization */
SqList L;
L.length=MAXSIZE-1; /* The key : r[0] No need and The effective length needs to be reduced from the base 1 */
L.r[0]=9999999;
for(i=1;i<MAXSIZE;i++){
L.r[i]=a[i-1]; /* r[0] No need */
}
for(i=0;i<MAXSIZE;i++){
printf("%d ",L.r[i]); /* Check the original sorting */
}
printf("\n");
HeapSort(&L); /* Heap up */
for(i=0;i<MAXSIZE;i++){ /* View the sorted results */
printf("%d ",L.r[i]);
}
return 0;
}
边栏推荐
- Breakpoint debugging under vs2019 c release
- 攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
- UML图记忆技巧
- 嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧
- Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
- Solana链上应用Crema因黑客攻击停运
- LOGO特训营 第四节 字体设计的重要性
- How to manage 15million employees easily?
- Challenges faced by virtual human industry
- PostgreSQL JOIN实践及原理
猜你喜欢

业务太忙,真的是没时间搞自动化理由吗?
Redis sentinel simply looks at the trade-offs between distributed high availability and consistency

UML图记忆技巧

LOGO special training camp section I identification logo and Logo Design Ideas

傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)

Google Earth Engine(GEE)——Tasks升级,实现RUN ALL可以一键下载任务类型中的所有影像

Unity-VScode-Emmylua配置报错解决

Challenges faced by virtual human industry
![[acwing] solution of the 58th weekly match](/img/e3/fd2c0ffbc9c7ca8a71875882d6c71b.png)
[acwing] solution of the 58th weekly match

LOGO特训营 第一节 鉴别Logo与Logo设计思路
随机推荐
SQL中MAX与GREATEST的区别
蓝队攻防演练中的三段作战
Logo special training camp section 1 Identification logo and logo design ideas
质量体系建设之路的分分合合
Sqlserver encrypts and decrypts data
安装人大金仓数据库
leetcode 72. Edit Distance 编辑距离(中等)
华泰证券是国家认可的券商吗?开户安不安全?
测试必会:BUG的分类及推进解决
LOGO特训营 第一节 鉴别Logo与Logo设计思路
With this PDF, we finally got offers from eight major manufacturers, including Alibaba, bytek and Baidu
2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import “fmt“ func main() { fmt.Pri
Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
PostgreSQLSQL高级技巧透视表
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
攻防世界 MISC 进阶区 hong
【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用
微服务--开篇
Huawei Nova 10 series released Huawei application market to build a solid application security firewall
串口数据帧
