学习记录
#include<bits/stdc++.h>
#define MAX_SZIE 1024
using namespace std;
class Heap{
private:
int size;
int p[MAX_SZIE];
public:
Heap(){
this->size=0;
}
int getRoot(){
if(this->size<=0){
cout<<"this is empty!"<<endl;
return 0;
}
return this->p[0];
}
int removeRoot(){
if(this->size<=0){
cout<<"this is empty!"<<endl;
return 0;
}
//调整
int tmp=this->p[0];
this->p[0]=this->p[this->size-1];
this->size--;
int i=0;
int child=2*i+1;
while(child<this->size){
if(child+1<this->size&&this->p[child]<this->p[child+1]){
//交换 子节点
child++;
}
if(this->p[i]<this->p[child]){
int a=this->p[i];
this->p[i]=this->p[child];
this->p[child]=a;
}
else break;
i=child;
child=child*2+1;
}
return tmp;//返回根节点值
}
void insert(int a){
if(this->size>=MAX_SZIE){
cout<<"full!"<<endl;
return;
}
this->p[this->size]=a;
this->size++;
//调整
int i= (this->size-1)/2;
int child=this->size-1;
while(i>=0&&this->p[i]<this->p[child]){
int tmp=this->p[i];
this->p[i]=this->p[child];
this->p[child]=tmp;
child=i;
i=(i-1)/2;
}
return;
}
};
int main(){
Heap heap;
cout<<heap.getRoot()<<endl;
heap.insert(3);
cout<<heap.getRoot()<<endl;
heap.insert(67);
cout<<heap.getRoot()<<endl;
heap.insert(1);
cout<<heap.getRoot()<<endl;
heap.insert(90);
cout<<heap.getRoot()<<endl;
heap.insert(-3);
cout<<heap.getRoot()<<endl;
return 0;
}