Я не уверен, какую логику вы применили для сортировки, но я понял, почему вы получаете индекс из-за ошибки диапазона.
Ошибка в коде
Высоздавая 10 сегментов, и теперь вы пытаетесь сгенерировать номер сегмента, умножив текущее значение или массив на 10.
Например, если ваше текущее значение массива равно 2, сгенерированный номер сегмента будет равен 20. Вы получили только 10однако метод Scatter()
выдаст ошибку.
private static void Scatter(int[] array, List<List<int>> buckets)
{
foreach (int value in array)
{
int bucketNumber = GetBucketNumber(value);
buckets[bucketNumber].Add(value); // ERROR HERE
}
}
РЕШЕНИЕ
На самом деле, существует проблема с методом GetBucketNumber()
.Вы должны использовать остаток, а не умножение.Измените метод следующим образом.
private static int GetBucketNumber(int value)
{
int val = value % 10;
return val;
}
Вы должны сделать
Постарайтесь решить свою проблему с помощью тяжелых попыток, прежде чем обращаться за помощью.Сначала запустите вашу программу на бумаге, я имею в виду, подтвердите вашу логику, прежде чем начинать кодировать.Верьте в себя и уделяйте достаточно времени своим попыткам.Наслаждайтесь кодированием.