From e50d0ffffe8c5a886288952fd91c1213d4de4020 Mon Sep 17 00:00:00 2001 From: Eric Curtin Date: Mon, 16 Dec 2019 12:21:16 +0000 Subject: [PATCH] Use getchar over getch (#681) * Use getchar over getch getch in Windows specific. Now the code will compile and work on other platforms like Linux and macOS. * Update and rename Heap Sort .cpp to heap_sort .cpp * cpplint fixes * Rename heap_sort .cpp to heap_sort.cpp --- sorting/Heap Sort .cpp | 62 ------------------------------------------ sorting/heap_sort.cpp | 51 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 62 deletions(-) delete mode 100644 sorting/Heap Sort .cpp create mode 100644 sorting/heap_sort.cpp diff --git a/sorting/Heap Sort .cpp b/sorting/Heap Sort .cpp deleted file mode 100644 index f188a0ea9..000000000 --- a/sorting/Heap Sort .cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -using namespace std; -void max_heapify(int *a, int i, int n) -{ - int j, temp; - temp = a[i]; - j = 2 * i; - while (j <= n) - { - if (j < n && a[j + 1] > a[j]) - j = j + 1; - if (temp > a[j]) - break; - else if (temp <= a[j]) - { - a[j / 2] = a[j]; - j = 2 * j; - } - } - a[j / 2] = temp; - return; -} -void heapsort(int *a, int n) -{ - int i, temp; - for (i = n; i >= 2; i--) - { - temp = a[i]; - a[i] = a[1]; - a[1] = temp; - max_heapify(a, 1, i - 1); - } -} -void build_maxheap(int *a, int n) -{ - int i; - for (i = n / 2; i >= 1; i--) - { - max_heapify(a, i, n); - } -} -int main() -{ - int n, i, x; - cout << "Enter number of elements of array\n"; - cin >> n; - int a[20]; - for (i = 1; i <= n; i++) - { - cout << "Enter Element " << (i) << endl; - cin >> a[i]; - } - build_maxheap(a, n); - heapsort(a, n); - cout << "Sorted Output\n"; - for (i = 1; i <= n; i++) - { - cout << a[i] << endl; - } - getch(); -} diff --git a/sorting/heap_sort.cpp b/sorting/heap_sort.cpp new file mode 100644 index 000000000..c72afc103 --- /dev/null +++ b/sorting/heap_sort.cpp @@ -0,0 +1,51 @@ +#include + +void max_heapify(int *a, int i, int n) { + int j, temp; + temp = a[i]; + j = 2 * i; + while (j <= n) { + if (j < n && a[j + 1] > a[j]) + j = j + 1; + if (temp > a[j]) { + break; + } else if (temp <= a[j]) { + a[j / 2] = a[j]; + j = 2 * j; + } + } + a[j / 2] = temp; + return; +} +void heapsort(int *a, int n) { + int i, temp; + for (i = n; i >= 2; i--) { + temp = a[i]; + a[i] = a[1]; + a[1] = temp; + max_heapify(a, 1, i - 1); + } +} +void build_maxheap(int *a, int n) { + int i; + for (i = n / 2; i >= 1; i--) { + max_heapify(a, i, n); + } +} +int main() { + int n, i, x; + std::cout << "Enter number of elements of array\n"; + std::cin >> n; + int a[20]; + for (i = 1; i <= n; i++) { + std::cout << "Enter Element " << (i) << endl; + std::cin >> a[i]; + } + build_maxheap(a, n); + heapsort(a, n); + std::cout << "Sorted Output\n"; + for (i = 1; i <= n; i++) { + std::cout << a[i] << endl; + } + std::getchar(); +}