当前位置:网站首页>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;
}
边栏推荐
- 环境加密技术解析
- Practice and principle of PostgreSQL join
- Logo special training camp Section V font structure and common design techniques
- Domestic database chaos
- 业务太忙,真的是没时间搞自动化理由吗?
- 傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
- It is said that software testing is very simple, but why are there so many dissuasions?
- 模拟摇杆控制舵机
- PostgreSQL JOIN实践及原理
- 集群的概述与定义,一看就会
猜你喜欢
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
攻防世界 MISC 进阶 glance-50
业务太忙,真的是没时间搞自动化理由吗?
The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
Logo special training camp Section IV importance of font design
Locust performance test - environment construction and use
醒悟的日子,我是怎么一步一步走向软件测试的道路
Challenges faced by virtual human industry
Li Kou 98: verify binary search tree
随机推荐
LOGO special training camp section I identification logo and Logo Design Ideas
About stack area, heap area, global area, text constant area and program code area
串口数据帧
Deployment of JVM sandbox repeater
Wake up day, how do I step by step towards the road of software testing
MYSQL架构——逻辑架构
制作条形码的手机App推荐
Why is Dameng data called the "first share" of domestic databases?
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
LOGO特训营 第一节 鉴别Logo与Logo设计思路
PostgreSQL服务端编程聚合和分组
Tla+ introductory tutorial (1): introduction to formal methods
不同环境相同配置项的内容如何diff差异?
【lua】int64的支持
Locust performance test - environment construction and use
模拟摇杆控制舵机
Microservices -- Opening
傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
高中物理:直线运动
【OpenGL】笔记二十九、抗锯齿(MSAA)