Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. struct element
  2. {
  3. int data;
  4. short int index;
  5. element(int data,short int index)
  6. {
  7. this->data = data;
  8. this->index = index;
  9. }
  10. element()
  11. {
  12. data = 0;
  13. index = 0;
  14. }
  15. };
  16. class MaxHeap
  17. {
  18. int* myarray;
  19. int size;
  20. int counter;
  21.  
  22. public:
  23. int parent(int i) { return (i/2); }
  24. int left(int i) { return (2*i); }
  25. int right(int i) { return (2*i+1); }
  26. void create(int size)
  27. {
  28. this->size = (size+1);
  29. counter = 1;
  30. myarray = new int[size+1];
  31. myarray[0] = 1;
  32.  
  33. }
  34. void Heapify(int index)
  35. {
  36.  
  37. int max = index;
  38. int right = this->right(index);
  39. int left = this->left(index);
  40. if (right<counter && myarray[right]>myarray[max])
  41. {
  42. max = right;
  43. }
  44. if (left<counter && myarray[left]>myarray[max])
  45. {
  46. max = left;
  47. }
  48. if (max != index)
  49. {
  50. swap(myarray[index], myarray[max]);
  51. Heapify(max);
  52. }
  53.  
  54. }
  55. bool isEmpty()
  56. {
  57. return (counter == 1);
  58. }
  59. void insert(int value)
  60. {
  61.  
  62. if (counter == size)
  63. {
  64. cout << "array is full" << endl;
  65. return;
  66. }
  67. myarray[counter++] = value;
  68. int i = counter-1;
  69. while (i != 1 && myarray[this->parent(i)] < myarray[i])
  70. {
  71. swap(myarray[i], myarray[i / 2]);
  72. i = this->parent(i);
  73. }
  74. }
  75. void print() const
  76. {
  77. int j = 1;
  78. while (j < counter)
  79. {
  80. cout << myarray[j++] << " ";
  81. }
  82. cout << endl;
  83. }
  84. int getMax()
  85. {
  86. if (isEmpty())
  87. {
  88. cout << "Haep is empty" << endl;
  89. return 0;
  90. }
  91. else
  92. {
  93. int max = myarray[1];
  94. myarray[1] = myarray[counter-1];
  95. counter--;
  96.  
  97. Heapify(1);
  98. return max;
  99. }
  100. }
  101. int get_size()
  102. {
  103. return counter;
  104. }
  105. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement