MIPS合并排序递归

时间:2012-08-22 10:35:03

标签: sorting merge mips

我需要为合并排序编写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;
}

1 个答案:

答案 0 :(得分:0)

为什么不从下往上和第一merge对单体,然后成对已经排序的2长子阵列,然后成对的4长子阵列等,{{1}在循环中传递相同的数组?

剩下的问题是实施log n。它将被重复调用,但不会递归调用。当然,merge必须将其输出写回到输入区域的数组中,或许可以使其输入的临时副本完成。

merge

没有递归,只有一个循环。