fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. // دالة لطباعة الـ array
  6. void printArray(const vector<int>& arr) {
  7. for (int x : arr) cout << x << " ";
  8. cout << endl;
  9. }
  10.  
  11. // heapify (Max Heap)
  12. void heapify(vector<int>& arr, int n, int i) {
  13. int largest = i;
  14. int left = 2 * i + 1;
  15. int right = 2 * i + 2;
  16.  
  17. if (left < n && arr[left] > arr[largest])
  18. largest = left;
  19.  
  20. if (right < n && arr[right] > arr[largest])
  21. largest = right;
  22.  
  23. if (largest != i) {
  24. swap(arr[i], arr[largest]);
  25.  
  26. cout << "After swap at index " << i << ": ";
  27. printArray(arr);
  28.  
  29. heapify(arr, n, largest);
  30. }
  31. }
  32.  
  33. // build heap مع تتبع التغييرات
  34. void buildHeap(vector<int>& arr) {
  35. int n = arr.size();
  36.  
  37. for (int i = n / 2 - 1; i >= 0; i--) {
  38. cout << "\nHeapify at index " << i << ":\n";
  39. heapify(arr, n, i);
  40.  
  41. cout << "Array after heapify(" << i << "): ";
  42. printArray(arr);
  43. }
  44. }
  45.  
  46. int main() {
  47. vector<int> arr = {4, 2,8,5,7,1,10,6,3,4};
  48.  
  49. cout << "Original array:\n";
  50. printArray(arr);
  51.  
  52. buildHeap(arr);
  53.  
  54. cout << "\nFinal Max Heap:\n";
  55. printArray(arr);
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Original array:
4 2 8 5 7 1 10 6 3 4 

Heapify at index 4:
Array after heapify(4): 4 2 8 5 7 1 10 6 3 4 

Heapify at index 3:
After swap at index 3: 4 2 8 6 7 1 10 5 3 4 
Array after heapify(3): 4 2 8 6 7 1 10 5 3 4 

Heapify at index 2:
After swap at index 2: 4 2 10 6 7 1 8 5 3 4 
Array after heapify(2): 4 2 10 6 7 1 8 5 3 4 

Heapify at index 1:
After swap at index 1: 4 7 10 6 2 1 8 5 3 4 
After swap at index 4: 4 7 10 6 4 1 8 5 3 2 
Array after heapify(1): 4 7 10 6 4 1 8 5 3 2 

Heapify at index 0:
After swap at index 0: 10 7 4 6 4 1 8 5 3 2 
After swap at index 2: 10 7 8 6 4 1 4 5 3 2 
Array after heapify(0): 10 7 8 6 4 1 4 5 3 2 

Final Max Heap:
10 7 8 6 4 1 4 5 3 2