#java #algorithm
#java #алгоритм
Вопрос:
Используя следующий код, что будет nums
содержать массив после 2 полных проходов?
int [] nums = {10, 6, 2, 9, 3, 1, 11};
for (int x=0; x<nums.length; x )
{
int largest = x;
for (int y=x 1; y<nums.length; y )
{
if (nums[y]>nums[largest])
largest=y;
}
if (largest!=x)
{
int temp=nums[x];
nums[x]=nums[largest];
nums[largest]=temp;
}
}
Комментарии:
1. Попробуйте печатать значения массива после каждого прохода, и вы получите ответ.
Ответ №1:
Этот код в основном упорядочивает числа в массиве в порядке убывания. Я ценю использование вложенного цикла, поскольку большинство алгоритмов сортировки реализованы с помощью вложенного цикла.
Переходим к ответу и его объяснению,
int largest = x;
Эта строка кода присваивает текущий индекс массива переменной по величине. Изначально наибольшее значение равно 0. Цикл после этой строки проверяет, является ли число в других местоположениях больше числа с наибольшим индексом или нет. Если число больше, то наибольший получает этот индекс.
Условие (наибольшее! = x) проверяет, был ли вообще изменен первоначально назначенный индекс. После первого прохода наибольшее значение содержит 6, которое не равно 0. В результате происходит замена.
Вывод после первого прохода 11, 6, 2, 9, 3, 1, 10
Следуя тому же шаблону, вывод после второго прохода 11, 10, 2, 9, 3, 1, 6