Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Gowtham Asokan on 12/1/19.
- //
- #include <iostream>
- using namespace std;
- // To heapify a subtree rooted with node i which is
- // an index in arr[]. n is size of heap
- void heapify(int arr[], int n, int i)
- {
- int largest = i; // Initialize largest as root
- int l = 2*i + 1; // left = 2*i + 1
- int r = 2*i + 2; // right = 2*i + 2
- // If left child is larger than root
- if (l < n && arr[l] > arr[largest])
- largest = l;
- // If right child is larger than largest so far
- if (r < n && arr[r] > arr[largest])
- largest = r;
- // If largest is not root
- if (largest != i)
- {
- swap(arr[i], arr[largest]);
- // Recursively heapify the affected sub-tree
- heapify(arr, n, largest);
- }
- }
- /* A utility function to print array of size n */
- void printArray(int arr[], int n)
- {
- cout << 'inside print array' << endl;
- for (int i=0; i<n; ++i)
- cout << arr[i] << " ";
- cout << "\n";
- }
- // main function to do heap sort
- void heapSort(int arr[], int n)
- {
- // Build heap (rearrange array)
- for (int i = n / 2 - 1; i >= 0; i--)
- heapify(arr, n, i);
- // One by one extract an element from heap
- for (int i=n-1; i>=0; i--)
- {
- // Move current root to end
- swap(arr[0], arr[i]);
- // call max heapify on the reduced heap
- heapify(arr, i, 0);
- }
- // printArray(arr, n);
- }
- // Driver program
- int main()
- {
- int num;
- int arr[5];
- cout << "Please enter your numbers one at a time, press ctrl-z to end: " << endl;
- for (int z = 0; z < 5;z++) {
- cin >> num;
- arr[z] = num;
- }
- int n = sizeof(arr)/sizeof(arr[0]);
- heapSort(arr, n);
- cout << "Sorted array is" << endl;
- printArray(arr, n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement