From cca7a54d3430a5ea5756489200119cba3c5db109 Mon Sep 17 00:00:00 2001 From: Syed Zohiab Ali <95756200+ZohaiAli@users.noreply.github.com> Date: Tue, 18 Oct 2022 12:47:12 +0500 Subject: [PATCH] short code heap sort in c language i try to changes your code and i short your code --- C Programs/heapsort.c | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/C Programs/heapsort.c b/C Programs/heapsort.c index 36f3384..8b0f786 100644 --- a/C Programs/heapsort.c +++ b/C Programs/heapsort.c @@ -60,3 +60,54 @@ printf("%d ",heap[i]); return 0; } + +Short code in heap sort in C language + +#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[] = { 12, 11, 13, 5, 6, 7 }; + int N = sizeof(arr) / sizeof(arr[0]); + heapSort(arr, N); + printf("Sorted array is\n"); + printArray(arr, N); +}