Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Heap{
- int v[30];
- int n;
- void pushDown(int pos){
- if(pos*2+1<=n){
- if(v[pos*2]>v[pos*2+1]){
- if(v[pos]<v[pos*2])
- {
- swap(v[pos],v[pos*2]);
- pushDown(pos*2);
- }}else if(v[pos]<v[pos*2+1]) {swap(v[pos],v[pos*2+1]);
- pushDown(pos*2+1);
- }
- }else if(pos*2<=n)
- if(v[pos]<v[pos*2]){
- swap(v[pos],v[pos*2]);
- pushDown(pos*2);
- }
- }
- void pushUp(int pos){
- if(pos > 1){
- if(v[pos/2] < v[pos]){
- swap(v[pos/2],v[pos]);
- pushUp(pos/2);
- }
- }
- }
- public:
- Heap(){
- n=0;
- }
- void insert(int x){
- n++;
- v[n]=x;
- pushUp(n);
- }
- void print(){
- for(int i =1;i <= n;i++){
- cout<<v[i]<<" ";
- }
- }
- void delHead(){
- swap(v[n],v[1]);
- n--;
- pushDown(1);
- }
- void sort(){
- int n2 =n;
- while(n){
- delHead();
- }
- n=n2;
- }
- };
- int main()
- {
- Heap x;
- x.insert(73);
- x.insert(20);
- x.insert(45);
- x.insert(33);
- x.insert(21);
- x.insert(100);
- x.print();
- cout<<endl;
- x.sort();
- x.print();
- return 0;
- }
Add Comment
Please, Sign In to add comment