Advertisement
thj_harun

algo_lab__4

Nov 24th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. class min_heap {
  4.         public:
  5.         int n;
  6.         int a[50];
  7.         void min_input();
  8.         void build_minheap();
  9.         void min_hapify(int i,int n);
  10.         void min_display(int s);
  11.         void min_heapsort();
  12.         void min_heap_insert(int key,int n);
  13.         void heap_chang_key(int i,int key);
  14.         int parent( int i);
  15.         int tree_prestnt(int siz);
  16. };
  17. int min_heap::tree_prestnt(int siz){
  18.     int i=1;
  19.     int k=1;
  20.     int j;
  21.     cout<<endl<<endl;
  22.  
  23.     for(;i<=siz;i*=2){
  24.             for(j=1;j<=i;j++){
  25.                 cout<<a[k]<<"  ";
  26.                 k++;
  27.                 if(k>siz)
  28.                     return 1;
  29.             }
  30.             cout<<endl;
  31.     }
  32. }
  33. int min_heap::parent(int i)
  34. {
  35.  
  36.     return (i/2);
  37. }
  38. void min_heap::heap_chang_key(int i,int key){
  39.     a[i]=key;
  40.     while((i>1)&&(a[parent(i)]>a[i])){
  41.  
  42.         swap(a[i],a[parent(i)]);
  43.         i=parent(i);
  44.     }
  45. }
  46. void min_heap::min_heap_insert(int key,int n){
  47.     int heap_size=n+1;
  48.     a[n+1]=2147483647;
  49.     heap_chang_key(n+1,key);
  50. }
  51. void min_heap::min_heapsort(){
  52.     int i=n;
  53.     for(;i>=2;i--){
  54.         cout<<a[1]<<"  ";
  55.         swap(a[1],a[i]);
  56.         n=n-1;
  57.         min_hapify(1,i-1);
  58.     }
  59.     cout<<a[i]<<endl;
  60. }
  61. void min_heap::min_display(int s){
  62.     int i;
  63.     cout<<"The heap is "<<endl;
  64.     for(i=1;i<=s;i++)
  65.         cout<<a[i]<<"  ";
  66.         cout<<endl;
  67. }
  68. void min_heap::min_input(){
  69.     cin>>n;
  70.     for(int i=1;i<=n;i++){
  71.         cin>>a[i];
  72.     }
  73. }
  74. void min_heap::build_minheap(){
  75.     int i=n/2;
  76.     for(;i>=1;i--){
  77.         min_hapify(i,n);
  78.     }
  79.  
  80. }
  81. void min_heap::min_hapify(int i,int n){
  82.     int minimul;
  83.     int l=2*i;
  84.     int r=2*i+1;
  85.     if((l<=n)&&(a[l]<a[i])){
  86.         minimul=l;
  87.     }
  88.     else
  89.         minimul=i;
  90.     if((r<=n)&&(a[r]<=a[minimul]))
  91.         minimul=r;
  92.     if(minimul!=i){
  93.         swap(a[i],a[minimul]);
  94.         min_hapify(minimul,n);
  95.     }
  96.  
  97. }
  98. int main(){
  99.     freopen("input.txt","r",stdin);
  100.     min_heap ob;
  101.     ob.min_input();
  102.     ob.build_minheap();
  103.     ob.min_display(ob.n);
  104. //    cout<<"\n THE Sorted heap is "<<endl;
  105. //    ob.min_heapsort();
  106.     int key;
  107.     cin>>key;
  108.     ob.min_heap_insert(key,ob.n);
  109.     ob.min_display(ob.n+1);
  110.     ob.tree_prestnt(ob.n);
  111.    // ob.display();
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement