📊🔥Advanced
Sort Array Using Merge Sort
Sort using merge sort
Merge Sort is a divide-and-conquer algorithm that divides the array into halves, sorts them, and merges them back. Time complexity: O(n log n).
Program Code
merge_sort.c
C
1#include <stdio.h>23void merge(int arr[], int l, int m, int r) {4 int n1 = m - l + 1;5 int n2 = r - m;6 7 int L[n1], R[n2];8 9 for (int i = 0; i < n1; i++)10 L[i] = arr[l + i];11 for (int j = 0; j < n2; j++)12 R[j] = arr[m + 1 + j];13 14 int i = 0, j = 0, k = l;15 16 while (i < n1 && j < n2) {17 if (L[i] <= R[j]) {18 arr[k] = L[i];19 i++;20 } else {21 arr[k] = R[j];22 j++;23 }24 k++;25 }26 27 while (i < n1) {28 arr[k] = L[i];29 i++; k++;30 }31 32 while (j < n2) {33 arr[k] = R[j];34 j++; k++;35 }36}3738void mergeSort(int arr[], int l, int r) {39 if (l < r) {40 int m = l + (r - l) / 2;41 42 mergeSort(arr, l, m);43 mergeSort(arr, m + 1, r);44 45 merge(arr, l, m, r);46 }47}4849int main() {50 int arr[] = {38, 27, 43, 3, 9, 82, 10};51 int n = sizeof(arr) / sizeof(arr[0]);52 53 printf("Original array: ");54 for (int i = 0; i < n; i++)55 printf("%d ", arr[i]);56 57 mergeSort(arr, 0, n - 1);58 59 printf("\nSorted array: ");60 for (int i = 0; i < n; i++)61 printf("%d ", arr[i]);62 printf("\n");63 64 return 0;65}Output
Original array: 38 27 43 3 9 82 10
Sorted array: 3 9 10 27 38 43 82
Related Examples
Want to Learn More?
Explore our comprehensive tutorials for in-depth explanations of C programming concepts.
Browse Tutorials