Выход за предел массива 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] не имеет смысла

→ Ссылка