我使用清单工作的一个合并排序算法,在C#中,我得到一个奇怪的错误。列表<T> .GetRange抛出参数异常
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 = NULL
我的问题:为什么我不能得到5 - 7的范围内有8个元素的数组?
因为你正在试图让Y与X(7:5),而不是与Y的范围X? –
不,我正在绑定范围Y(5)到X(7)。 – Stephen