王道考研 ++++ 归并排序

📅 2026/7/28 16:44:12
王道考研 ++++ 归并排序
#include stdio.h #include stdlib.h int temp[10001]; void marge(int *list,int L,int mid,int R); int* margesort(int *list,int L,int R); /*归并*/ void marge(int *list,int L,int mid,int R) { int i L,j mid1,n mid,m R; int k 0; while (i n j m) { if(list[i] list[j]) temp[k] list[i]; else temp[k] list[j]; }//当比较晚之后某数组还有剩余元素 while(i n)temp[k] list[i]; while(j m)temp[k] list[j]; for(i 0;i k;i) list[Li] temp[i]; } /*切割*/ int* margesort(int *list,int L,int R) { if(L R) { int mid (LR) 1; margesort(list,L,mid); margesort(list,mid1,R); marge(list,L,mid,R); } return list; } int main(int argc, char const *argv[]) { int *list,size,i; printf(请输入数组大小:); scanf(%d,size); list (int*)malloc(sizeof(int)*size); printf(请输入%d个元素:\n,size); for(i 0;i size;i) scanf(%d,list[i]); list margesort(list,0,size-1); printf(排序结果:); for(i 0;i size;i) printf(%d%c,list[i], \n[i size-1]); return 0; }