【发布时间】:2017-01-02 15:59:40
【问题描述】:
我正在使用 List 在 c# 中进行合并排序算法,但出现了一个奇怪的错误。
class SortingAlgorithms
{
public static List<int> mergeSort(List<int> array)
{
if (array.Count == 1)
return array;
List<int> a1 = array.GetRange(0, (int)array.Count / 2);
int x = array.Count - 1;
int y = array.Count/2 + 1;
List<int> a2 = array.GetRange(y, x);
...
此代码引发以下异常:偏移量和长度超出数组范围或计数大于从索引到源集合末尾的元素数。
这似乎相当简单。但事实并非如此。你看,调试时这些是值:
array.Count = 8
a1.Count = 4
x = 7
y = 5
a2 = 空
我的问题:为什么我不能在包含 8 个元素的数组中获得 5 - 7 的范围?
【问题讨论】:
-
因为您试图获取 Y 到 X(7 到 5)的范围,而不是 X 到 Y?
-
没有。我想得到 Y(5) 到 X(7) 的范围。