将数组分成二组A,B,如果这二组组内的数据都是有序的,那么就可以很方便的将这二组数据进行排序。
之后,将A,B组各自再分成二组。
依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了。这样通过先递归的分解数列,再合并数列就完成了归并排序。
#include#include void GuiBing(int a[],int first,int mid,int last,int c[]){ int i=first; int j=mid+1; int m=mid; int n=last; int k=0; while((i<=m)&&(j<=n)) { if(a[i]<=a[j]) c[k++]=a[i++]; else c[k++]=a[j++]; } while(i<=m) c[k++]=a[i++]; while(j<=n) c[k++]=a[j++]; for(int l=0;l
参考:
https://blog.csdn.net/morewindows/article/details/6678165