Shiam7777777

Untitled

Feb 15th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.89 KB | None | 0 0
  1.                     //   Heap_sort_Decreasing_order_Using_MinHeap
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void heapSort(int a[], int n, int h);
  8. void buildMinHeap(int a[], int n, int h);
  9. void minHeapify(int a[], int h, int i);
  10. int left(int i);
  11. int right(int i);
  12.  
  13. int main(){
  14.     int a[20], n, h;
  15.     cout << "How many numbers?: ";
  16.     cin >> n;
  17.     h = n;
  18.     cout << "\nEnter numbers: ";
  19.     for(int i = 1; i <= n; ++i)
  20.         cin >> a[i];
  21.     heapSort(a, n, h);
  22.     cout << "\nOutput numbers in sorted order: ";
  23.     for(int i = 1; i <= n; ++i)
  24.         cout << " " << a[i];
  25.     return 0;
  26. }
  27.  
  28. void heapSort(int a[], int n, int h){
  29.     buildMinHeap(a, n, h);
  30.     for(int i = n; i >= 2; --i){
  31.         swap(a[1], a[i]);
  32.         h--;
  33.         minHeapify(a, h, 1);
  34.     }
  35. }
  36.  
  37. void buildMinHeap(int a[], int n, int h){
  38.     h = n;
  39.     for(int i = (n/2); i >= 1; --i)
  40.         minHeapify(a, h, i);
  41. }
  42.  
  43. void minHeapify(int a[], int h, int i){
  44.     int l = left(i);
  45.     int r = right(i);
  46.     int smallest;
  47.     if(l <= h && a[l] < a[i])
  48.         smallest = l;
  49.     else
  50.         smallest = i;
  51.     if(r <= h && a[r] < a[smallest])
  52.         smallest = r;
  53.     if(smallest != i){
  54.         swap(a[i], a[smallest]);
  55.         minHeapify(a, h, smallest);
  56.     }
  57. }
  58.  
  59. int left(int i){
  60.     return (2 * i);
  61. }
  62.  
  63. int right(int i){
  64.     return (2 * i + 1);
  65. }
  66.  
  67.                      //  Heap_Decrease_Key
  68.  
  69. #include <iostream>
  70.  
  71. using namespace std;
  72.  
  73. void HeapDecreaseKey(int a[], int n, int h);
  74. void BuildMinHeap(int a[], int n, int h);
  75. void MinHeapify(int a[], int h, int i);
  76. int left(int i);
  77. int right(int i);
  78.  
  79.  
  80.  
  81. int main(){
  82.     int a[100], n, h;
  83.     cout << "How many items?: ";
  84.     cin >> n;
  85.     h = n;
  86.     cout << "\nEnter the values: ";
  87.     for(int i = 1; i <= n; ++i)
  88.         cin >> a[i];
  89.  
  90.     HeapDecreaseKey(a, n, h);
  91.     cout << "\nResulting min-heap: ";
  92.     for(int j = 1; j <= n; ++j)
  93.         cout << " " << a[j];
  94. return 0;
  95. }
  96.  
  97. void HeapDecreaseKey(int a[], int n, int h){
  98.     int key, i;
  99.     BuildMinHeap(a, n, h);
  100.     cout << "\nKey value: ";
  101.     cin >> key;
  102.     cout << "\nIndex: ";
  103.     cin >> i;
  104.     if(key > a[i])
  105.         cout << "\nNew key is greater than current key";
  106.     a[i] = key;
  107.     while(i>1 && a[i/2]>a[i]){
  108.         swap(a[i], a[i/2]);
  109.         i = i/2;
  110.     }
  111. }
  112.  
  113. void BuildMinHeap(int a[], int n, int h){
  114.     h = n;
  115.     for(int i = (n/2); i >= 1; --i)
  116.         MinHeapify(a, h, i);
  117. }
  118.  
  119. void MinHeapify(int a[], int h, int i){
  120.     int l = left(i);
  121.     int r = right(i);
  122.     int smallest;
  123.     if(l <= h && a[l] < a[i])
  124.         smallest = l;
  125.     else
  126.         smallest = i;
  127.     if(r <= h && a[r] < a[smallest])
  128.         smallest = r;
  129.     if(smallest != i){
  130.         swap(a[i], a[smallest]);
  131.         MinHeapify(a, h, smallest);
  132.     }
  133. }
  134.  
  135. int left(int i){
  136.     return (2*i);
  137. }
  138.  
  139. int right(int i){
  140.     return (2*i + 1);
  141. }
  142.  
  143.                          //  Min_Heap_Insert
  144.  
  145. #include <iostream>
  146.  
  147. using namespace std;
  148.  
  149. void MinHeapInsert(int a[], int n, int h);
  150. void HeapDecreaseKey(int a[], int n, int h);
  151. void BuildMinHeap(int a[], int n, int h);
  152. void MinHeapify(int a[], int h, int i);
  153. int left(int i);
  154. int right(int i);
  155.  
  156.  
  157.  
  158. int main(){
  159.     int a[100], n, h;
  160.     cout << "How many items?: ";
  161.     cin >> n;
  162.     h = n;
  163.     cout << "\nEnter the values: ";
  164.     for(int i = 1; i <= n; ++i)
  165.         cin >> a[i];
  166.  
  167.     MinHeapInsert(a,n,h);
  168.     cout << "\nResulting min-heap: ";
  169.     for(int j = 1; j <= (n+1); ++j)
  170.         cout << " " << a[j];
  171. return 0;
  172. }
  173.  
  174. void MinHeapInsert(int a[], int n, int h){
  175.     h++;
  176.     a[h] = 99999;
  177.     HeapDecreaseKey(a, n, h);
  178. }
  179.  
  180. void HeapDecreaseKey(int a[], int n, int h){
  181.     int key, i;
  182.     BuildMinHeap(a, n, h);
  183.     cout << "\nKey value: ";
  184.     cin >> key;
  185. //    cout << "\nIndex: ";
  186. //    cin >> i;
  187.     if(key > a[h])
  188.         cout << "\nNew key is greater than current key";
  189.     a[h] = key;
  190.     while(h>1 && a[h/2]>a[h]){
  191.         swap(a[h], a[h/2]);
  192.         h = h/2;
  193.     }
  194. }
  195.  
  196. void BuildMinHeap(int a[], int n, int h){
  197.     h = n;
  198.     for(int i = (n/2); i >= 1; --i)
  199.         MinHeapify(a, h, i);
  200. }
  201.  
  202. void MinHeapify(int a[], int h, int i){
  203.     int l = left(i);
  204.     int r = right(i);
  205.     int smallest;
  206.     if(l <= h && a[l] < a[i])
  207.         smallest = l;
  208.     else
  209.         smallest = i;
  210.     if(r <= h && a[r] < a[smallest])
  211.         smallest = r;
  212.     if(smallest != i){
  213.         swap(a[i], a[smallest]);
  214.         MinHeapify(a, h, smallest);
  215.     }
  216. }
  217.  
  218. int left(int i){
  219.     return (2*i);
  220. }
  221.  
  222. int right(int i){
  223.     return (2*i + 1);
  224. }
  225.  
  226.                        
  227.        //  Heap_Extract_Min
  228.  
  229. #include <iostream>
  230.  
  231. using namespace std;
  232.  
  233. void BuildMinHeap(int a[], int n, int h);
  234. void MinHeapify(int a[], int h, int i);
  235. int left(int i);
  236. int right(int i);
  237. int HeapExtractMin(int a[], int n, int h);
  238.  
  239. int main(){
  240.     int a[100], n, h;
  241.     cout << "How many items ?: ";
  242.     cin >> n;
  243.     h = n;
  244.     cout << "\nEnter the items: ";
  245.     for(int i = 1; i <= n; ++i)
  246.         cin >> a[i];
  247.     int m = HeapExtractMin(a, n, h);
  248.     cout << "\nThe Minimum is: " << m;
  249. return 0;
  250. }
  251.  
  252. int HeapExtractMin(int a[], int n, int h){
  253.     BuildMinHeap(a, n, h);
  254.     int min;
  255.     if(h < 1)
  256.         cout << "\nERROR: Heap Underflow";
  257.     min = a[1];
  258.     a[1] = a[h];
  259.     h--;
  260.     MinHeapify(a, h, 1);
  261.     return min;
  262. }
  263.  
  264. void BuildMinHeap(int a[], int n, int h){
  265.     h = n;
  266.     for(int i = (n/2); i >= 1; --i)
  267.         MinHeapify(a, h, i);
  268. }
  269.  
  270. void MinHeapify(int a[], int h, int i){
  271.     int l = left(i);
  272.     int r = right(i);
  273.     int smallest;
  274.     if(l <= h && a[l] < a[i])
  275.         smallest = l;
  276.     else
  277.         smallest = i;
  278.     if(r <= h && a[r] < a[smallest])
  279.         smallest = r;
  280.     if(smallest != i){
  281.         swap(a[i], a[smallest]);
  282.         MinHeapify(a, h, smallest);
  283.     }
  284. }
  285.  
  286. int left(int i){
  287.     return (2*i);
  288. }
  289.  
  290. int right(int i){
  291.     return (2*i + 1);
  292. }
Advertisement
Add Comment
Please, Sign In to add comment