我正在尝试使用 Wolfram Mathematica 创建一个合并排序,但我仍然遇到这个递归错误,我不知道我在哪里犯了错误。我从 Java 重写了这段代码,它工作得很好,所以我想这对 Wolfram 来说是一些特别的事情。你有什么想法,我的代码有什么问题吗?
非常感谢!
Heer 是我的代码:
mergeSort[x_, left_, right_] :=
Module[{array = x, middle, n1, n2, L, R, i, j, k},
If[left < right,
middle = (left + right) / 2;
mergeSort[array, left, middle];
mergeSort[array, middle + 1, right];
n1 = middle - left + 1;
n2 = right - middle;
L = {};
R = {};
For[i = 1, i < n1, ++i,
L[[i]] = array[[left + 1]];
];
For[j = 1, j < n2, ++j,
R[[j]] = array[[middle + 1 + j]];
];
i = 0;
j = 0;
k = left;
While[i < n1 && j < n2,
If[L[[i]] <= R[[j]],
array[[k]] = L[[i]];
i++;
,
array[[k]] = R[[j]];
j++;
];
k++;
];
While[i < n1,
array[[k]] = L[[i]];
i++;
k++;
];
While[j < n2,
array[[k]] = R[[j]];
j++;
k++;
];
Return[array];
];
]
这是我的函数调用-mergeSort[{58, 3, 98}, 0, 3];