for (int i = 0; i < a.length; i++) { // цикл для записи даных в переменную
String b = a[i]; // вносим каждую итую ячейку массива в переменную b в цикле
for (int j = i + 1; j < a.length; j++) { //Почему j = i+1???
if (b == null) {
break;
Объясните пожалуйста почему j=i+1
Royalflesh
1 уровень
Объясните второй цикл
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Кирилл
22 ноября 2023, 11:57
Ответ в логике: смотрите, есть ряд цифр: 1, 2, 3, 4, 5.
i-ая переменная внешнего цикла начинает перебирать цифры с 1.
А j-ая переменная внутреннего цикла начинает перебирать цифры с 2.
Т.е. за первый проход мы получаем: 1 будет сравниваться сначала с 2, затем с 3, потом с 4, потом с 5. За второй проход: 2 будет сравниваться с 3, потом с 4, потом с 5. И т.д.
Т.е. к j мы прибавляем 1, чтобы исключить сравнение 1 с 1, 2 с 2 - это же понятно, что значения будут одинаковыми.
+2
Royalflesh
22 ноября 2023, 17:44
спасибо большое,помогли мне!
0
Стас ПасинковSoftware Developer в ZipyMaster
21 ноября 2023, 23:20
які є варіанти?
j = 0 - тоді ми будемо проходити наш масив від самого початку. так можна, але прикол в тому, шо на попередніх ітераціях ми вже мали б видалити дублі з індексів від 0 до i. тому нам і нема шо тут перевіряти вже
j = i - теж можна, але навіщо, якщо в нас по одному й тому ж індексу буде лежати один і той же елемент. і не факт, шо в нього будуть повтори. тому нам довелося б ще якийсь додатковий іф сюди приписувати щоб врахувати цей випадок.
тому і роблять j = i + 1 щоб почати із наступного за цим елемента
+1
Royalflesh
22 ноября 2023, 17:44
благодарствую!
0