let numbers = [1, 3, 5, 7, 9, 11];
let k=0;
if (numbers.length%2==1) {
for (let i=numbers.length-1; i>=(numbers.length-1)/2; i--) {
let number = numbers[k]
numbers[k] = numbers[i]
numbers[i] = number
k++
}
} else {
for (let i=numbers.length-1; i>=numbers.length/2; i--) {
let number = numbers[k]
numbers[k] = numbers[i]
numbers[i] = number
k++
}
}
console.log(numbers);
Всем привет! Решил поделится своим решением, может мое сумбурное видение этой задачи кому-то поможет
}
}
console.log(numbers + ’ результат’);
я попытался решить с помощью сортировки, как учили в теории, НО если в массиве шесть и более элементов, то средние два элемента не менялись, тогда я добавил условие, что если в массиве больше шести элементов, то немного изменяется цикл. Если кто может, подскажите, почему это работает ТАК?
ps.если в массиве будет больше 8 элементов, то средние элементы снова не поменяются, и придётся снова добавлять условие с новым циклом.
Можно ли как-то сделать этот код рабочим на 100% или это неверное решение?
let numbers = [1, 3, 5, 7, 9, 11];
let y = numbers.length - 1;
for (let i = 0; i < numbers.length/2; i++) {
let x = numbers[i];
numbers[i] = numbers[y];
numbers[y] = x;
y--;
};
Красиво и действительно очень просто, благодарю что поделились. Я не начал в своих размышлениях пробовать такой вариант т.к. не знал что делать если numbers.length не четная и казалось что i < numbers.length / 2 сломает код, но в вашем решении это не важно, супер.
Я тут еще вариант набросал очень доступный по быстрому:
let numbers = [1, 3, 5, 7, 9, 11];
let help = 1;
for (let i=0; i<=(numbers.length-1)/2; i++) {
let swap = numbers[i];
numbers[i] = numbers[numbers.length-help];
numbers[numbers.length-help] = swap;
help++
}
Запутанно немного, можно без вложенного цикла, а почему не работает на разные массивы - ограничения циклов (j < numbers.length - 2) - этот сработает до 3го включительно элемента в списке из 6ти элементов, но если элементов 8, то до 5го, а значит поменяет элементы 4 и 5 местами 2 раза