当前位置:网站首页>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;
}
边栏推荐
- leetcode 72. Edit Distance 编辑距离(中等)
- Practice and principle of PostgreSQL join
- Logo special training camp section II collocation relationship between words and graphics
- Challenges faced by virtual human industry
- Introduction and application of bigfilter global transaction anti duplication component
- 达梦数据凭什么被称为国产数据库“第一股”?
- Ascendex launched Walken (WLKN) - an excellent and leading "walk to earn" game
- 阿里推出新品牌“瓴羊”,致力成为“数字化领头羊”
- Easy to use app recommendation: scan QR code, scan barcode and view history
- Service online governance
猜你喜欢
Close system call analysis - Performance Optimization
Huawei Nova 10 series released Huawei application market to build a solid application security firewall
Unity修仙手游 | lua动态滑动功能(3种源码具体实现)
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
LOGO特训营 第四节 字体设计的重要性
Play with grpc - go deep into concepts and principles
How to transfer to software testing, one of the high paying jobs in the Internet? (software testing learning roadmap attached)
LOGO special training camp section I identification logo and Logo Design Ideas
攻防世界 MISC 进阶 glance-50
Locust性能测试 —— 环境搭建及使用
随机推荐
2022-07-04:以下go语言代码输出什么?A:true;B:false;C:编译错误。 package main import “fmt“ func main() { fmt.Pri
Google Earth Engine(GEE)——Tasks升级,实现RUN ALL可以一键下载任务类型中的所有影像
Solana chain application crema was shut down due to hacker attacks
Sqlserver encrypts and decrypts data
leetcode 72. Edit Distance 编辑距离(中等)
SQL中MAX与GREATEST的区别
不同环境相同配置项的内容如何diff差异?
Interview essential leetcode linked list algorithm question summary, whole process dry goods!
Kdd2022 | what features are effective for interaction?
Microservices -- Opening
Force buckle 3_ 383. Ransom letter
Logo special training camp Section IV importance of font design
It is said that software testing is very simple, but why are there so many dissuasions?
PostgreSQLSQL高级技巧透视表
页面关闭前,如何发送一个可靠请求
Embedded development: skills and tricks -- seven skills to improve the quality of embedded software code
Li Kou 98: verify binary search tree
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
More than 30 institutions jointly launched the digital collection industry initiative. How will it move forward in the future?
MySQL storage data encryption