RaresDumitrica

Lab 5- heapsort baieti

Jan 17th, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Heap{
  6.     int v[30];
  7.     int n;
  8.     void pushDown(int pos){
  9.         if(pos*2+1<=n){
  10.             if(v[pos*2]>v[pos*2+1]){
  11.                 if(v[pos]<v[pos*2])
  12.                 {
  13.                 swap(v[pos],v[pos*2]);
  14.                 pushDown(pos*2);
  15.             }}else if(v[pos]<v[pos*2+1]) {swap(v[pos],v[pos*2+1]);
  16.                                         pushDown(pos*2+1);
  17.                                         }
  18.         }else if(pos*2<=n)
  19.                 if(v[pos]<v[pos*2]){
  20.                     swap(v[pos],v[pos*2]);
  21.                     pushDown(pos*2);
  22.                 }
  23.     }
  24.  
  25.     void pushUp(int pos){
  26.         if(pos > 1){
  27.             if(v[pos/2] < v[pos]){
  28.                 swap(v[pos/2],v[pos]);
  29.                 pushUp(pos/2);
  30.             }
  31.         }
  32.     }
  33.  
  34.  
  35. public:
  36.     Heap(){
  37.         n=0;
  38.     }
  39.     void insert(int x){
  40.         n++;
  41.         v[n]=x;
  42.         pushUp(n);
  43.     }
  44.  
  45.     void print(){
  46.         for(int i =1;i <= n;i++){
  47.             cout<<v[i]<<" ";
  48.  
  49.         }
  50.     }
  51.  
  52.     void delHead(){
  53.         swap(v[n],v[1]);
  54.         n--;
  55.         pushDown(1);
  56.  
  57.  
  58.     }
  59.  
  60.     void sort(){
  61.         int n2 =n;
  62.         while(n){
  63.             delHead();
  64.         }
  65.         n=n2;
  66.     }
  67.  
  68.  
  69. };
  70.  
  71.  
  72.  
  73.  
  74.  
  75. int main()
  76. {
  77.     Heap x;
  78.     x.insert(73);
  79.     x.insert(20);
  80.     x.insert(45);
  81.     x.insert(33);
  82.     x.insert(21);
  83.     x.insert(100);
  84.     x.print();
  85.     cout<<endl;
  86.     x.sort();
  87.     x.print();
  88.  
  89.  
  90.     return 0;
  91. }
Add Comment
Please, Sign In to add comment