Advertisement
xBloodY

Heap

Jul 26th, 2022
979
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.88 KB | None | 0 0
  1. class Heap {
  2.     static const int SIZE = 100;
  3.     int* h;
  4.     int HeapSize;
  5. public:
  6.     Heap() {
  7.         h = new int[SIZE];
  8.         HeapSize = 0;
  9.     }
  10.     void addelem(int n) {
  11.         int i = HeapSize, parent = (i - 1)/2;
  12.         h[i] = n;
  13.         HeapSize++;
  14.         while (i > 0 && parent > 0) {
  15.             if (h[i] > h[parent])
  16.                 swap(h[i], h[parent]);
  17.             i = parent;
  18.             parent = (i - 1) / 2;
  19.         }
  20.     }
  21.     void outHeap() {
  22.         int i = 0, k = 1;
  23.         while (i < HeapSize) {
  24.             while (i < k && i < HeapSize) {
  25.                 cout << h[i] << ' ';
  26.                 i++;
  27.             }
  28.             cout << endl;
  29.             k *= 2 + 1;
  30.         }
  31.     }
  32.     void heapify(int i) {
  33.         int left = 2 * i + 1;
  34.         int right = 2 * i + 2;
  35.         if (left < HeapSize && h[i] < h[left]) {
  36.             swap(h[i], h[left]);
  37.             heapify(left);
  38.         }
  39.         if (right < HeapSize && h[i] < h[right]) {
  40.             swap(h[i], h[left]);
  41.             heapify(right);
  42.         }
  43.     }
  44.     int getmax() {
  45.         int x = h[0];
  46.         h[0] = h[--HeapSize];
  47.         heapify(0);
  48.     }
  49. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement