Heap Sort

Geeks for Geeks for Heap Sort. 
Visualization for Heap Sort. 
Animation for Heap Sort.

 

Download Heap Sort


 

//

//  main.cpp

//  Heap_Sort

//

//  Created by Zhenlin Pei on 12/24/18.

//  Copyright © 2018 Zhenlin Pei. All rights reserved.

//

// C++ program for implementation of Heap Sort

#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);

    }

}

// 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);

    }

}

/* A utility function to print array of size n */

void printArray(int arr[], int n)

{

    for (int i=0; i<n; ++i)

        cout << arr[i] << ” “;

    cout << “\n”;

}

// Driver program

int main()

{

    int arr[] = {12, 11, 13, 5, 6, 7};

    int n = sizeof(arr)/sizeof(arr[0]);

    

    heapSort(arr, n);

    

    cout << “Sorted array is \n”;

    printArray(arr, n);

}


 

Comments

So empty here ... leave a comment!

Leave a Reply

Your email address will not be published.

Sidebar