两个排好序的数组合并都很简单,但到具体怎么二分递归及代码实现就脑子短路了
比如递归返回什么?递归到最后怎么排序?
我还以为是每次递归回来就合并再返回到上一层,返回后用啥装呢?……我还以为每次把传过来的数组分成两个数组再进行操作……
也不是说完全想的没道理,就是想的太乱了。
首先,总共需要两个void函数,两个数组。
两个函数分别用来递归和每层递归后的最后的合并;
而一切的操作并不是通过每层创建两个临时数组实现,而是直接在A数组本身上操作,B数组起辅助作用
void mergesort(int a[],int left,int right) {
mergesort(a,left,mid);
mergesort(a,mid+1,right);
merge(a,left,