我正在尝试在C中实现递归合并排序,以对ARGV
中stdin的输入进行排序。为此,我需要创建新的数组,这些数组是ARGV
数组的子集的副本。我需要副本,因为接下来我将使用它们来修改原始数组,而我无法就地执行。
void pm_merge(char **A, int p, int q, int r)
{
char **L;
char **R;
int i;
L = malloc(sizeof(char*) * pm_stringlen(A) + 1);
i = 0;
while (i <= q)
strncpy(L[i], A[i], pm_stringlen(A[i]));
}
void pm_mergesort(char **A, int p, int r)
{
int q;
if (p < r)
{
q = (p + r) / 2;
pm_mergesort(A, p, q);
pm_mergesort(A, q + 1, r);
pm_merge(A, p, q, r);
}
}
我包括了pm_mergesort()
作为上下文,但真正的问题在于pm_merge()
函数。谁能帮我吗?该代码尽管可以编译,但给了我一个设置错误。