#include <stdio.h>
#include <stdlib.h>int arr[] = {8, 4, 5, 7, 1, 3, 6, 2,9};
int a[] = {8, 4, 5, 7, 1, 3, 6, 2,9};
void GuiBingSort(int start ,int end){//0~n-1//不可再分则退出 if(end - start < 1) return;//二分 int mid = start+(end - start)/2;//二分后的两个数组,再次进行递归 GuiBingSort(start,mid);GuiBingSort(mid + 1,end);//当两个数组都按顺序排好后 int s = start;//第一个数组头 int b = mid+1;//第二个数组头 int i = start;//排序结果放i里 while(s<=mid && b<=end){//哪个小,往a里放哪个 if(arr[s]<=arr[b]){a[i++]=arr[s++];}else{a[i++]=arr[b++];}}while(s<=mid)a[i++] = arr[s++];while(b<=end)a[i++] = arr[b++];//防止有一个数组没有遍历完 for(i = start;i<=end;i++){arr[i] = a[i];}//把排好的数组内容,从临时数组放到大数组里
} int main() {int size = sizeof(arr)/4;GuiBingSort(0,size-1);for (int i = 0; i < size ;i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}