1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
   |  #include<stdio.h> int a[10000], b[10000];
  void mergearray(int a[], int first, int mid, int last, int temp[]) {     int i = first, j = mid + 1;     int k = 0;     while(i <= mid && j <= last)       {         if(a[i] <= a[j])             temp[k++] = a[i++];           else             temp[k++] = a[j++];       }     while(i <= mid)         temp[k++] = a[i++];         while(j <= last)         temp[k++] = a[j++];          for(i = 0; i < k; i++)         a[first + i] = temp[i]; }
  void mergesort(int a[], int first, int last, int temp[]) {     if(first < last)       {         int mid = (first + last) / 2;            mergesort(a, first, mid, temp);           mergesort(a, mid + 1, last, temp);          mergearray(a, first, mid, last, temp);      } }
  int main() {     int n, i;     scanf("%d", &n);     for(i = 0; i < n; i++)         scanf("%d", &a[i]);     mergesort(a, 0, n-1, b);     for(i = 0; i < n; i++)         printf("%d ",a[i]);     return 0; }
 
  |