排序算法---归并排序
#include <stdio.h>void merge(int a[], int tmp[],int pleft, int pright, int rightend){ int leftend=pright-1; int num=rightend-pleft+1; int pos=pleft; while(pleft<=leftend && pright<=rightend) { if(a[pleft]<=a[pright]) tmp[pos++]=a[pleft++]; else tmp[pos++]=a[pright++]; } while(pleft<=leftend) tmp[pos++]=a[pleft++]; while(pright<=rightend) tmp[pos++]=a[pright++]; int i; for(i=0;i<num;i++,rightend--) a[rightend]=tmp[rightend];}void msort(int a[], int tmp[], int left, int right){ int mid=(left+right)/2; if(left<right) { msort(a,tmp,left,mid); msort(a,tmp,mid+1,right); merge(a,tmp,left,mid+1,right); }}void merge_sort(int a[], int n){ int tmp=malloc(n*sizeof(int)); if (tmp!=NULL) { msort(a,tmp,0,n-1); free(tmp); } else printf("error!\n");}?