#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define swap(a,b) {\
__typeof(a) temp = a;\
a = b; b = temp;\
}
void sub_sort(int num[],int l,int r){
if(r - l == 1){
if(num[l] > num[r]) swap(num[l],num[r]);
return;
}
if(r == l) return;
sub_sort(num,l,(l+r)/2);
sub_sort(num,(l+r)/2+1,r);
int *temp = (int *)malloc(sizeof(int) * (r-l+1));
for(int i=l,j=(r+l)/2+1,k=0; k<=(r-l); ++k){
if(i<=(r+l)/2 && (j>r || num[i] < num[j])) temp[k] = num[i++];
else temp[k] = num[j++];
}
for(int i=l; i<=r; ++i) {
num[i] = temp[i-l];
}
free(temp);
}
void sort(int num[],int size){
if(num == NULL) return ;
sub_sort(num,0,size-1);
}
int main(){
#define N 10
int num[N];
srand(time(0));
for(int i=0; i<N; ++i) num[i] = rand() % 100;
for(int i=0; i<N; ++i) printf("%d ",num[i]);
printf("\n");
sort(num,N);
for(int i=0; i<N; ++i) printf("%d ",num[i]);
printf("\n");
#undef N
return 0;
}
12-22