diff --git a/Heap_sort.cpp b/Heap_sort.cpp new file mode 100644 index 0000000..164c0c6 --- /dev/null +++ b/Heap_sort.cpp @@ -0,0 +1,51 @@ +#include + using namespace std; + + void heapify(int arr[], int N, int i) + { + int largest = i; + int left = 2 * i + 1; + int right = 2 * i + 2; + + if (left < N && arr[left] > arr[largest]) + largest = left; + if (right < N && arr[right] > arr[largest]) + largest = right; + if (largest != i) + { + swap(arr[i], arr[largest]); + heapify(arr, N, largest); + } + } + + void heapSort(int arr[], int N) + { + for (int i = N / 2 - 1; i >= 0; i--) + heapify(arr, N, i); + for (int i = N - 1; i >= 0; i--) + { + swap(arr[0], arr[i]); + heapify(arr, i, 0); + } + } + + int main() + { + int n; + cout << "Enter size of Array: "; + cin >> n; + int arr[n]; + cout << "Enter " << n << " Elements: "; + for (int i = 0; i < n; i++) + { + cin >> arr[i]; + } + cout << "Applying Heap Sort.....\n"; + heapSort(arr, n); + cout << "Sorted...\n"; + for (int i = 0; i < n; i++) + { + cout << arr[i] << " "; + } + return 0; + }