Я не понимаю лигики. У мени арифметически виходит што 5 и 4 просто меняютса местами
И почему usersByDay.length - 2 ?? Хелп мі пліз
var usersByDay = [5, 4, 3, 2, 1, 0];
console.log(usersByDay);
for (var i = 0; i <= usersByDay.length - 2; i++) {
var minValue = usersByDay[i];
for (var j = i + 1; j <= usersByDay.length - 1; j++) {
if (usersByDay[j] < minValue) {
minValue = usersByDay[j];
console.log(minValue);
var swap = usersByDay[i];
usersByDay[i] = minValue;
usersByDay[j] = swap;
}
}
console.log('lol');
console.log(usersByDay);
}
есть два цикла:
- внешний с i
- внутренний с j
внешний проходит до предпоследнего элемента массива
внутренний с текущего + 1 до последнего
1 итерация внешнего цикла:
собственно на любой итерации внешнего цикла запускается и полностью отрабатывается внутренний
т.е.
мы берем 1 элемент массива usersByDay[i], где i = 0 и записываем его значение в буфер minValue.
в ходе работы внутреннего цикла, мы сравниваем, есть ли элемент, который меньше буфера. если находит - то элементы массива меняются местами. таких перестановок может произойти несколько за время работы внутреннего цикла
как итог, на 1 итерации внешнего цикла мы получаем минимальный элемент массива на 1ой позиции. все просто.
соответственно на 2 итерации - второй по минимуму, на 3ей - 3ий по минимуму и т.д.
почему usersByDay.length - 2? т.е. почему до предпоследнего?
потому что мы уже получим выстроенный ряд из элементов, а последний нет смысла сравнивать он и так максимальный, потому что единственный оставшийся. это оптимизация итераций цикла (меньше итераций - выше производительность программы в целом).
5 лайков
Большое спасибо))) очень хорошо объяснил)) сколько лет ты уже учишь js :: ??
немного, полгода где-то. пока не учусь, на работе запара =)
1 лайк
Ти работаеш програмистом ?
нет, не работаю. мне еще до джуна надо чуть-чуть подучиться
1 лайк
Ответь пожалуйста) как вообще понять что ты джун:?
а вот пойди и устройся работать в вебстудию на позицию джуниора =) если берут, значит ты овладел стеком технологий =)