#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<fstream>
#include<cctype>
using namespace std;
const int INF = 0x3f3f3f;
typedef struct Max_Heap {
int* element;
int capacity;
int size;
}Max_Heap,*heap;
heap create(int MaxSize)
{
heap root = new Max_Heap;
root->element = (int*)malloc((MaxSize + 1) * sizeof(int));
root->element[0] = INF;
root->size = 0;
root->capacity = MaxSize;
return root;
}
void insert_first(heap root,int number)
{
int temp = 0;
int i = ++root->size;
for (; root->element[i / 2] < number; i /= 2) {
root->element[i] = root->element[i / 2];
}
root->element[i] = number;
}
int delete_element(heap root)
{
int parent, child;
int destination = root->element[1];
int tmp = root->element[root->size--];
for (parent = 1; parent * 2 <= root->size; parent = child) {
child = parent * 2;
if (child != root->size && root->element[child] < root->element[child + 1]) {
child++;
}
if (tmp >= root->element[child]) break;
else {
root->element[parent] = root->element[child];
}
}
root->element[parent] = tmp;
return destination;
}
void print(heap h)
{
for (int i = 1; i <= h->size; i++) cout << h->element[i] << " ";
}
int main()
{
int t; cin >> t;
heap h = create(t);
for (int i = 0; i <= 5; i++) {
int num; cin >> num;
insert_first(h, num);
}
print(h);
}
/*
第二种堆的创建方式下回补充
*/
最大堆(MaxHeap)的基本操作(建立,插入和删除)
最新推荐文章于 2021-12-08 19:16:07 发布