Выход за предел массива c#
Дан массив. Сравнить первый и второй элементы массива. Если второй элемент меньше первого, то поменять их местами. Затем то же самое сделать со вторым и третьим, …, предпоследним и последним элементами. Какое число окажется в результате в последнем элементе массива?
public static void swap(int a, int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
static void Main(string[] args)
{
int[] array = new int[10];
Random rand = new Random();
for(int i=0; i<array.Length; i++)
{
array[i] = rand.Next(20);
Console.Write(array[i] + " ");
}
for(int i=0; i<array.Length; i++)
{
if(array[i] > array[i + 1])
{
swap(array[i], array[i + 1]);
}
}
Console.WriteLine();
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
}
}
На моменте if(array[i] > array[i + 1]) у меня происходит ошибка. И индекс выходит за пределы массива. Подскажите как это решить?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Надо либо проверять граничные случаи и не допускать варианта сравнения с array[i + 1] (т.е. делать if до проверки с array[i + 1]), либо циклы ограничивать до длины - 1, т.к. сравнение последнего элемента массива с элементом array[i + 1] не имеет смысла