今天知道了Dennis Ritchie的去世,有点小消沉。大师一路走好.....
--------------------------------------------------------------------------------------
归并排序简单来说就是将一个集合分为若干小集合,每一小集合内部进行排序,然后将这些有序的集合进行排序都到最终的结果。归并排序的时间复杂度为nlogn。一个归并排序的小例子:
1 #include2 void merge(int array[],int result[],int low,int mid,int high){ 3 int i,j,k; 4 printf("low = %d,mid = %d,high = %d\n",low,mid,high); 5 for(i=low,j=mid+1,k=0;i<=mid&&j<=high;){ 6 //按大小赋值,注意++ 7 if(array[i] =high) return; 28 int mid=(low+high)/2; 29 merge_sort(array,result,low,mid); 30 merge_sort(array,result,mid+1,high); 31 merge(array,result,low,mid,high); 32 } 33 int main(void){ 34 int a[10]={ 10,9,8,7,100,22,34,1,6,0}; 35 int b[10]; //辅助数组 36 int i; 37 merge_sort(a,b,0,9); 38 for(i=0;i<10;i++){ 39 printf("%d ",a[i]); 40 } 41 printf("\n"); 42 return 0; 43 }