C语言中实现二路归并排序的过程如下:首先定义中间值mid为0,进入if循环,会进行大小判断,条件满足时执行firstmid = (first last)/2;操作。接着调用自身函数merge_sort(arr, first, mid);,实现递归过程。递归实质是反复调用自身,直到条件不成立,跳出循环。调用merge_sort函数后,程序进入void merge_...
程序代码都是顺序执行的,当然是把一路调用完再做第二路调用,最后把排好序的2路进行合并;在排序每一路的时候也是使用归并的方式,把一路分成2路,层层深入。理解的话,你可以这样:比如8个数,你从上到下竖着排成一列,然后中间一条横线分割。横线上面的部分再从中间分割成2部分,2部分放在第二...
mid = (first+last)/2;然后会进入函数的调用,调用 merge_sort(arr, first, mid);函数,递归说白了就是反复的调用自己,知道条件不满足,跳出循环。调用merge_sort后,程序有进入到了void merge_sort(int arr[], unsigned int first, unsigned int last)不过此时无符号整形last的值就接收了midmid...