当前位置:网站首页>2. Heap sort "hard to understand sort"
2. Heap sort "hard to understand sort"
2022-07-07 15:15:00 【Mu Quanyu [dark cat]】
Heap sort (Heapsort) It is a sort algorithm designed by using the data structure of heap . This heap is an approximately complete binary tree structure , And it's also a big pile , Sorting is also based on this big top heap .
Why do you say Heap sort It's hard to understand ? answer : The main reason is some people Maybe not Binary tree , I don't know what is Pile up , Never learned The idea of simulating arrays . in other words He doesn't have these In the case of premise knowledge points , How is that possible? Good understanding Heap sorting . What's more? Heap sort Adjust the implementation of the heap , also Yes Our biggest recursion . and Overall sorting idea , once lecturer I didn't make it clear , Probably Just Is a little knowledge .
1.1 Algorithm description
- Use array to simulate binary tree structure , Make the left and right nodes of each root node The corresponding subscript is
left = 2k + 1、right = 2k + 2. - Put this binary tree Initialize to Big pile top , Here be used Recursive operation . Thought is Start with the last subtree , forward Put each subtree All become big piles ! Of course there will be Aftereffect problem (
namely When we After adjusting the node order , The node being exchanged The subtree that is the root node Is it still Big top pile ??), therefore We here Need recursive , then Go to Handle All subtrees under this node . - because Root node of the entire binary tree yes Maximum value , So we Sure hold This node and Last A node swapping . namely stay 1 ~ n Within the range of nodes , This The root node yes Maximum , We will take it. Put it in Last . then Let's put 1 ~ n – 1 A binary tree with a range of nodes ( exclude The last node ) Let it become Big pile top , then Go again Conduct The above operations , Put the penultimate Maximum Put it in The penultimate position . And so on , When we Only The first node of the binary tree , Then the whole Orderly !!
1.2 Dynamic diagram demonstration

1.3 Code implementation
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
vector<int> arr = {
91,60,96,13,35,65,46,65,10,30,20,31,77,81,22};
int len;
void swapF(int k){
// To k by The root node The subtree of Conduct Explore and adjustment
int left = 2 * k + 1;
int right = 2 * k + 2;
int father = k;// To be updated The root node , Probably The root node need Adjust and update
if(left < len && arr[left] > arr[father]){
father = left;// The left node Than The root node Big , therefore The subscript of the left node Save to
// father in , advance get set Location of the root node
}
if(right < len && arr[right] > arr[father]){
father = right;// if The largest node yes Right node , that father = right
}
if(father != k){
// If The subtree is adjustment , namely The root node change
// then Handle Aftereffect problem
swap(arr[father],arr[k]);// First the Adjust this subtree
swapF(father);// then Come on look down The location of the node we exchanged The data has changed
// After change , whether also keep Piled on top nature
}
}
void init(){
len = arr.size();
for(int i = floor(len / 2);i >= 0; i--){
// from the last one Subtree start
swapF(i);
}
}
void heapSort(){
init();
for(int i = len - 1;i > 0;--i){
// Conduct Sort , Take every one. Within the interval Maximum value , all Put it in Where to put it
swap(arr[i],arr[0]);
len--;
swapF(0);
}
}
int main(void){
heapSort();
for(auto x : arr){
cout << x << " ";
}
return 0;
}

Heap sort In two parts : Adjustment of pile + The order of the heap .
Time complexity :O(n) + O(nlogn) = O(nlogn)
Spatial complexity :O(1)
边栏推荐
- Jetson AGX Orin CANFD 使用
- Ffmpeg --- image processing
- What are PV and UV? pv、uv
- Mathematical modeling -- what is mathematical modeling
- Infinite innovation in cloud "vision" | the 2022 Alibaba cloud live summit was officially launched
- A need to review all the knowledge, H5 form is blocked by the keyboard, event agent, event delegation
- 【OBS】RTMPSockBuf_ Fill, remote host closed connection.
- 【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
- Ctfshow, information collection: web1
- Lidar Knowledge Drop
猜你喜欢

【数据挖掘】视觉模式挖掘:Hog特征+余弦相似度/k-means聚类

CTFshow,信息搜集:web13
Window环境下配置Mongodb数据库

asp. Netnba information management system VS development SQLSERVER database web structure c programming computer web page source code project detailed design

Briefly describe the working principle of kept

Typescript release 4.8 beta

Cocoscreator operates spine for animation fusion

CTFshow,信息搜集:web5

Qu'est - ce qu'une violation de données
![[make a boat diary] [shapr3d STL format to gcode]](/img/aa/6113c51ca82b00c0adc42fbf3f2b4b.png)
[make a boat diary] [shapr3d STL format to gcode]
随机推荐
Niuke real problem programming - Day12
摘抄的只言片语
Change win10 Screensaver
asp. Netnba information management system VS development SQLSERVER database web structure c programming computer web page source code project detailed design
STM32F103C8T6 PWM驱动舵机(SG90)
Briefly describe the working principle of kept
Pat grade a 1103 integer factorizatio
Qu'est - ce qu'une violation de données
全日制研究生和非全日制研究生的区别!
拜拜了,大厂!今天我就要去厂里
CTFshow,信息搜集:web12
Niuke real problem programming - Day17
什么是数据泄露
2022年5月互联网医疗领域月度观察
Read PG in data warehouse in one article_ stat
Ctfshow, information collection: web9
【服务器数据恢复】某品牌StorageWorks服务器raid数据恢复案例
[make a boat diary] [shapr3d STL format to gcode]
[机缘参悟-40]:方向、规则、选择、努力、公平、认知、能力、行动,读3GPP 6G白皮书的五层感悟
Deformable convolutional dense network for enhancing compressed video quality