mdgaziur001

mergesort

Aug 17th, 2025
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.79 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.     }
  25.  
  26.     while (i2 <= end) {
  27.         temp[k++] = arr[i2++];
  28.     }
  29.  
  30.     for (int i = 0; i < k; i++) {
  31.         arr[i + start] = temp[i];
  32.     }
  33. }
  34.  
  35. int main() {
  36.     int n;
  37.     scanf("%d", &n);
  38.  
  39.     int a[n];
  40.     for (int i = 0; i < n; i++) {
  41.         scanf("%d", &a[i]);
  42.     }
  43.  
  44.     sort(a, 0, n - 1);
  45.  
  46.     for (int i = 0; i < n; i++) {
  47.         printf("%d ", a[i]);
  48.     }
  49.  
  50.     printf("\n");
  51.  
  52.     return 0;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment