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 46 47 48 49 50 51 52 53
| #include<stdio.h> int merge(int arr[], int left, int mid, int right) { int j = mid + 1; int i = left; int arr1[100]; int l = 0; while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { arr1[l++] = arr[j++]; } else { arr1[l++] = arr[i++]; } } while (i <= mid) { arr1[l++] = arr[i++]; } while (j <= right) { arr1[l++] = arr[j++]; } for (i = left, l = 0; i <= right; i++, l++) { arr[i] = arr1[l]; } return 0; } void sort(int arr[], int left,int right) { if (left < right) { int mid = (right + left) / 2; sort(arr, left, mid); sort(arr, mid + 1, right); merge(arr, left, mid, right); }
} void printarr(int arr[], int b) { for (int i = 0; i < b; i++) { printf("%d,", arr[i]); } }
int main(void) { int a1[10]; for (int i = 0;i < 10;i++) { scanf_s("%d", &a1[i]);
} int n = sizeof(a1) / sizeof(a1[0]);
sort(a1, 0, n - 1); printarr(a1, n); return 0; }
|