From 257f533444bb217c8ef6bf2294a900e18029b426 Mon Sep 17 00:00:00 2001 From: ParasSharma Date: Wed, 5 Oct 2022 00:10:44 +0530 Subject: [PATCH] Heap Sort --- Sorting/Heap Sort/heap_sort.c | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Sorting/Heap Sort/heap_sort.c diff --git a/Sorting/Heap Sort/heap_sort.c b/Sorting/Heap Sort/heap_sort.c new file mode 100644 index 0000000..c318f2f --- /dev/null +++ b/Sorting/Heap Sort/heap_sort.c @@ -0,0 +1,44 @@ + #include + + void swap(int *a, int *b) { + int temp = *a; + *a = *b; + *b = temp; + } + + 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); + } + } + + void printArray(int arr[], int n) { + for (int i = 0; i < n; ++i) + printf("%d ", arr[i]); + printf("\n"); + } + + int main() { + int arr[] = {1, 12, 9, 5, 6, 10}; + int n = sizeof(arr) / sizeof(arr[0]); + heapSort(arr, n); + printf("Sorted array is \n"); + printArray(arr, n); + } \ No newline at end of file