В общем это кусок кода,я, хотел бы уточнить работу цикла который должен выводить вводимые числа в возрастающем порядке. 1. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) ); 2. int spisok[] = new int[5]; 3. for (int i = 0; i < spisok.length; i++) 4. { 5. spisok[i] = Integer.parseInt(reader.readLine()); 6. } 7. for(int i = 4; i >= 0 ; i--) { 8. for(int j = 0 ; j < i ; j++) { 9. if( spisok[j] < spisok[j+1] ) { 10. int tmp = spisok[j]; 11. spisok[j] = spisok[j+1]; 12. spisok[j+1] = tmp; 13. } 14. } 15. System.out.println(spisok[i]); } Внизу перечень моего понимания работы цикла, прошу указать какие пункты являются ложными и почему: 1. Работа цикла начинается в строке 7 и заканчивается в строке 15 ? 2. В строках 7 и 8 используется перебор значений. В строке 7 происходит перебор intовых значений массива (условно говоря по-горизонтали), то есть программа выполняется слева направо, в строке 8 происходит перебор intовых значений массива (условно говоря по-вертикали), за счет чего происходит смещение программы вправо, как если бы каждая последующая ячейка массива была бы столбцом.? 3. Перебор элементов массива происходит с правого края (с последней ячейки), потому что int i = 4 и на каждой последующей итерации программа смещается справа налево [0], [1], [2], [3], [4] ? 3. Утверждение 2 неверно и перепутано с "Двумерными массивами". На самом деле в строке 7 ячейки массива перебираются поочередно, но в строке 8 переменная "j" это просто число, значение которого сравнивается с переменной "і" - индексом ячейки массива, для отрабатывания уменьшающегося количества переборов условий "if"? 4. Код выводит значения правильно, но из того что я вижу, строки с 9 по 12 выглядят неправильно. Допустим в ячейке "spisok[j]" находится значение "10", а в ячейке "spisok[j+1]" находится значение "12". Так ведь "10" меньше "12" - вот и вроде хорошо? - ан, нет ! строка 9 дословно: если значение в ячейке "spisok[j]" это "10", а в "spisok[j+1]" это "12", то: а) в tmp (временная интовая переменная) заносится "10", б) в "spisok[j]" заносится "12", в) в "spisok[j+1]" заносится tmp ,т.е. наша "10". Выходит числа должны выводится "12, 10..." в ниспадающем порядке, а они выводятся правильно, как в условии в возрастающем ! Может это связано с тем что перебор выполняется с крайней правой ячейки ? Товарищи помогите пожалуйста! 5. Если каждый раз условие внутреннего цикла (;j < i;) сравнивается с переменной "i", то мы имеем два условия окончания цикла: первое при котором работа в строках 9-12 пройдет по всем парам и не отработает; второе при котором пара циклов в строках 7-8 отработает конечное количество раз, а именно 10 раз? Объяснение почему 10 раз внизу.; или одно условие ? Потому что строки 9-12 все равно будут выполнять перебор ограниченное двумя циклами количество раз, даже когда после трех переборов последовательность будет соответствовать условию. 6.цикл проходит 4 (0,1,2,3) раза (внешний цикл значение 4), потом 3 (0,1,2) раза (внешний цикл значение 3), потом 2 (0,1) раза (внешний цикл значение 2), потом 1 (0) раз (внешний цикл значение 1). Объясните пожалуйста также порядок выполнения работы цикла. Помогите пожалуйста! Очень нуждаюсь в разъяснении, запутался в конец! Руки опускаются...