From 52b3a66e142ed395125d9836995981e97fd5d24d Mon Sep 17 00:00:00 2001 From: Jiya <222jiyatiwari@gmail.com> Date: Fri, 25 Jul 2025 11:41:26 +0530 Subject: [PATCH] mergesortc --- C/mergesortc | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 C/mergesortc diff --git a/C/mergesortc b/C/mergesortc new file mode 100644 index 0000000..9bd2d26 --- /dev/null +++ b/C/mergesortc @@ -0,0 +1,60 @@ +#include + +void merge(int arr[], int left, int mid, int right) { + int i, j, k; + int n1 = mid - left + 1; + int n2 = right - mid; + + int L[n1], R[n2]; + + for (i = 0; i < n1; i++) + L[i] = arr[left + i]; + for (j = 0; j < n2; j++) + R[j] = arr[mid + 1 + j]; + + i = 0; j = 0; k = left; + while (i < n1 && j < n2) { + if (L[i] <= R[j]) + arr[k++] = L[i++]; + else + arr[k++] = R[j++]; + } + + + while (i < n1) + arr[k++] = L[i++]; + + while (j < n2) + arr[k++] = R[j++]; +} + + +void mergeSort(int arr[], int left, int right) { + if (left < right) { + int mid = left + (right - left) / 2; + + // Sort first and second halves + mergeSort(arr, left, mid); + mergeSort(arr, mid + 1, right); + + merge(arr, left, mid, right); + } +} + + +int main() { + int arr[] = {16, 27, 43, 3, 19, 82, 10}; + int n = sizeof(arr) / sizeof(arr[0]); + + printf("Original array: "); + for (int i = 0; i < n; i++) + printf("%d ", arr[i]); + + mergeSort(arr, 0, n - 1); + + printf("\nSorted array: "); + for (int i = 0; i < n; i++) + printf("%d ", arr[i]); + + return 0; +}