我需要为合并排序编写MIPS汇编语言代码。我已经创建了合并函数,但使用递归的merge_sort函数让我很困惑。我已经发布了相同的参考C代码。我知道必须使用堆栈,但是,作为初学者我无法做到这一点,我将不胜感激任何帮助。
int merge_sort(int arr[],int low,int high)
{
int mid;
if(low<high) {
mid=(low+high)/2;
// Divide and Conquer
merge_sort(arr,low,mid);
merge_sort(arr,mid+1,high);
// Combine
merge(arr,low,mid,high);
}
return 0;
}
答案 0 :(得分:0)
为什么不从下往上和第一merge
对单体,然后成对已经排序的2长子阵列,然后成对的4长子阵列等,{{1}在循环中传递相同的数组?
剩下的问题是实施log n
。它将被重复调用,但不会递归调用。当然,merge
必须将其输出写回到输入区域的数组中,或许可以使其输入的临时副本完成。
merge
没有递归,只有一个循环。