答:
归并排序是先递归再合并,貌似没有看到你合并前的递归,这样是为了从相邻叶子进行合并,这样每次递归处理完的数组范围一定是升序或者降序的,至于为什么复制要加上=是因为当前处理的数组范围从left一直到righ,你这个写法用for来表示:
for int i = left, j = 0; i <= left; i++, j++
因为你开的临时数组不管从什么下标开始,一定是对应数组范围right-left+1
在合并前还需要写递归函数
if left <= righr return;
merge left mid
merge mud+1 right
差不多稍微改改