Помощь в выводе этого алгоритма

#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