【发布时间】:2018-06-02 02:07:53
【问题描述】:
我确定我犯了一个非常愚蠢的错误,但我已经做了几个小时了,我只是希望我的代码能够漂亮地排序......当奇数进入等式时,实现出现了问题。
下面是我的MergeSplit方法:
static List<Motor> MergeSplit(List<int> ListX)
{
int n = ListX.Count;
if (n <= 1)
return ListX;
List<int> left = new List<int>();
List<int> right = new List<int>();
for (int i = 0; i < n; i++)
{
if (i < (n / 2))
left.Add(ListX[i]);
else
right.Add(ListX[i]);
}
left = MergeSplit(left);
right = MergeSplit(right);
return Merge(left, right);
}
这里是Merge 方法:
static List<int> Merge(List<int> ListX, List<int> ListY)
{
List<int> result = new List<int>();
int i = 0;
while (ListX.Count > i && ListY.Count > i)
{
if (ListX[i] > ListY[i])
{
result.Add(ListY[i]);
result.Add(ListX[i]);
}
else
{
result.Add(ListX[i]);
result.Add(ListY[i]);
}
i++;
}
//If odd, add the rest to the result
if (ListX.Count > ListY.Count)
result.Add(ListX[ListX.Count - 1]);
else if (ListY.Count > ListX.Count)
result.Add(ListY[ListY.Count - 1]);
return result;
}
感谢您的帮助!
更新
算法只是没有正确排序某些输入
【问题讨论】:
-
但是您的代码甚至不会编译,因为您返回
return ListX但返回类型是List<Motor> -
Something is going wrong 是一个绝对无用的问题描述。相反,具体解释出了什么问题。你有什么问题?。如果您需要帮助,您需要清楚地解释问题并提出具体问题。 Something is going wrong 和 What's wrong? 在任何意义上都不是具体的。您提供的输入是什么?您得到了哪些不符合您期望的输出?
-
欢迎来到 Stack Overflow!这里的大多数人都会回答问题,但他们不会为您调试代码。这个问题可能会被否决并关闭。但是,如果您可以缩小问题范围,您可以编辑您的问题或发布另一个问题。请务必使用tour 并访问How to Ask。祝你好运!