【发布时间】:2014-08-13 19:49:43
【问题描述】:
我在合并排序实现中编写了这个函数来合并两个排序数组,但我总是得到错误的输出。
void merge(int array[],int l,int m,int r)
{
int i,j,k,n1,n2;
n1=m-l+1;
n2=r-m;
int left[n1],right[n2];
for(i=0;i<n1;i++)
left[i]=array[l+i]
for(i=0;i<n2;i++)
right[i]=array[m+i+1]
i=0; j=0;
for(k=l;k<r;k++)
{
if(left[i]<=right[j])
{
array[k]=left[i];
i+=1;
}
else
{
array[k]=right[j];
j+=1;
}
}
样本输入:4 6 3 1 2
输出:1 2 3 0 2
我不知道哪里出了问题。我遵循了 Cormen 中给出的合并排序算法。谁能帮帮我?
【问题讨论】:
-
我不知道这是否能解决问题,但请正确格式化您的代码,因为您缺少几个分号。例如:您缩短的
for-loops 缺少结束循环的分号。 -
如果可以的话,请提供我和输入来检查它。
-
样本输入:- 5 4 1 11 3 9 2 输出给出:- 1 2 0 2 0 1 2
-
不明白你的问题。你说有两个数组但只有一个输入......你的意思是你将一个数组的内容排序到另一个数组中?
-
只是合并排序算法中使用的合并函数@FiddlingBits
标签: c algorithm sorting merge mergesort