mdgaziur001

Mergesort in C

Aug 16th, 2025
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.82 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void sort(int *arr, int start, int end) {
  4.     if (start == end) return;
  5.  
  6.     int mid = (start + end) / 2;
  7.     sort(arr, start, mid);
  8.     sort(arr, mid + 1, end);
  9.  
  10.     int temp[end - start + 1];
  11.     int i1 = start, i2 = mid + 1;
  12.     int k = 0;
  13.  
  14.     while (i1 <= mid && i2 <= end) {
  15.         if (arr[i1] < arr[i2]) {
  16.             temp[k++] = arr[i1++];
  17.         } else {
  18.             temp[k++] = arr[i2++];
  19.         }
  20.     }
  21.  
  22.     while (i1 <= mid) {
  23.         temp[k++] = arr[i1];
  24.         i1++;
  25.     }
  26.  
  27.     while(i2 <= end) {
  28.         temp[k++] = arr[i2];
  29.         i2++;
  30.     }
  31.  
  32.     for (int i = 0; i < end - start + 1; i++) {
  33.         arr[start + i] = temp[i];
  34.     }
  35. }
  36.  
  37. int main() {
  38.     int n;
  39.     scanf("%d", &n);
  40.  
  41.     int arr[n];
  42.     for (int i = 0; i < n; i++) {
  43.         scanf("%d", &arr[i]);
  44.     }
  45.  
  46.     sort(arr, 0, n - 1);
  47.  
  48.     for (int i = 0; i < n; i++) {
  49.         printf("%d ", arr[i]);
  50.     }
  51.     printf("\n");
  52.  
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment