gpt4 book ai didi

c - 合并两个已排序数组的困难

转载 作者:行者123 更新时间:2023-11-30 19:45:59 24 4
gpt4 key购买 nike

我编写了这个函数,用于在合并排序实现中合并两个已排序的数组,但我总是得到错误的输出。

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(k=l;k<r;k++)
{
if(left[i]<=right[j])
{
array[k]=left[i];
i+=1;
}
else
{
array[k]=right[j];
j+=1;
}
}

for(k=l;k<=r;k++){
if(j>=n2 || i<n1 && left[i] <= right[j])
array[k] = left[i++];
else
array[k] = right[j++];
}

关于c - 合并两个已排序数组的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com