/* 归并排序:*/#include <stdio.h>#include <stdlib.h>static int *arrB = (int *)malloc(sizeof(int *)*20);void merge(int *arr, int low, int mid, int high) {//一次归并排序 int k, m, n; for (int i = low; i <= high; i++) { arrB[i] = arr[i]; } for (m = low, n = mid + 1, k = m; m <= mid && n <= high;) { if (arrB[m] <= arrB[n]) { arr[k++] = arrB[m++]; } else { arr[k++] = arrB[n++]; } } while (n <= high)arr[k++] = arrB[n++]; while (m <= mid)arr[k++] = arrB[m++];}void mergeSort(int *arr, int low, int high) { if (low < high) { int mid = (low + high) / 2; mergeSort(arr, low, mid); mergeSort(arr, mid + 1, high); merge(arr, low, mid, high); }}int main() { int arr[] = { 38,49,65,97,76,13,27 }; mergeSort(arr, 0, 6); return 0;}