Прошу проверить на наличие ошибок решение "Задом Наперёд"

Мое решение

var numbers = [1, 3, 5, 7, 9, 11, 12];
var sr = (numbers.length)/2

for (var i = 0; i <= sr - 1; i++) {
var numberForSwap = numbers[i];
var swap = numbers[(numbers.length - 1) - i];
numbers[i] = swap;
numbers[(numbers.length - 1) - i] = numberForSwap;
}

1 лайк
Мое решение
var numbers = [1, 3, 5, 7, 9, 11];

for (var i = 0; i < numbers.length / 2; i++) {
  var tmp = numbers[i];
  numbers[i] = numbers[numbers.length - 1 - i];
  numbers[numbers.length - 1 - i] = tmp;
}
7 лайков

Я так понимаю, проверка вызова “Задом наперёд” не работает (элементы массивов, с которыми происходит сравнение в тестах, не отсортированы)?

Решение
    var numbers = [1, 3, 5, 7, 9, 11];

    for (var i = 0; i < numbers.length; i++) {
      for (var j = i + 1; j < numbers.length; j++) {
        if (numbers[j] > numbers[i]) {
          var temp = numbers[i];
          numbers[i] = numbers[j];
          numbers[j] = temp;
        }
      }
Тесты

В этом задании не нужно сортировать от большего к меньшему, а только изменить порядок элементов.

3 лайка

И правда. Не дочитал :thinking: Спасибо :wink:

Не уверен, что применение функции удаления элементов массива приветствуется, но все же.

var numbers = [1, 3, 5, 7, 9, 11];
var x = numbers.length;
for (var i = numbers.length -1; i >= 0; i–) {
numbers.push(numbers[i]);
}
numbers.splice(0, x);

Для меня это было самая сложная задача, подсмотрел принцип у igor-provotorov и решил только тогда

Задом наперёд
console.log('Программа "Задом наперёд" ');

var numbers = [1, 3, 5, 7, 9, 11];
console.log('Начальный массив чисел : ' + numbers);

for (var i = 0; i < numbers.length / 2; i++) {
  var swap = numbers[numbers.length - 1 - i];
  numbers[numbers.length - 1 - i] = numbers[i];
  numbers[i] = swap;
}

console.log('Числа задом наперед : ' + numbers);

P.s. Как написал бы господин SNPR

А у меня так вышло :
numbers.reverse();

:joy::rofl:

5 лайков

var numbers = [1, 3, 5, 7, 9, 11];
for (var i = numbers.length -1; i >= 0; i–) {
numbers == numbers.push(numbers[i]);
}
numbers.splice(0, numbers.length/2);

1 лайк

такой варик

var numbers = [1, 3, 5, 7, 9, 11];
var reverse = []
for (var i = numbers.length-1; i >= 0; i-- ) {
reverse.push(numbers[i])
}
numbers = reverse

5 лайков

Честно нагуглено на stackoverflow, но как мне кажется, решение очень универсально и подходит для всех языков

 var numbers = [1, 3, 5, 7, 9, 11];

    for (i = 0, j = numbers.length -1; i < j; i++, j--) {
      var temp = numbers[i];
      numbers[i] = numbers[j];
      numbers[j] = temp;
      }
4 лайка

Прикольно, цикл оказывается можно делать с двумя переменными)

У меня вот так получилось:

var j = numbers.length - 1; 
for (var i = 0; i <= (numbers.length - 1)/ 2; i ++) {
    var swap = numbers[i];
    numbers[i] = numbers[j];
    numbers[j] = swap;
    j --;
  }

Я вот так решил:

if (numbers.length % 2 !== 0) { var medianIndex = (numbers.length - 1) / 2;
} else { var medianIndex = numbers.length / 2; };

for (var i = 0; i<medianIndex; i++){
swap = numbers[i];
numbers[i] = numbers[numbers.length - 1 - i];
numbers[numbers.length- 1 - i] = swap;
};

var numbers = [1, 3, 5, 7, 9, 11];
var numbersNew = [];

for (var i = 1; i <= numbers.length; i++) {
  numbersNew.push(numbers[numbers.length - i]);
}
numbers = numbersNew;

var numbers = [1, 3, 5, 7, 9, 11];

numbers.reverse();

5 лайков

Без создания новых переменных.

   var numbers = [1, 3, 5, 7, 9, 11];

    for (var i = 0; i < Math.floor(numbers.length / 2); i++) {
      numbers[i] += numbers[numbers.length - 1 - i];
      numbers[numbers.length - 1 - i] = numbers[i] - numbers[numbers.length -1 - i];
      numbers[i] -= numbers[numbers.length - 1 - i];
    }
var numbers = [1, 3, 5, 7, 9, 11];
var i=0;
var j=numbers.length-1;
var swap=0;
while (i<=j){
  swap=numbers[j];
  numbers[j]=numbers[i];
  numbers[i]=swap;
  i++;j--;
}

Все почему-то через for решили. По моему, через while намного элегантнее получается

2 лайка

если и так и так возможно, то лучше использовать for с инкрементом. он отрабатывается быстрее в большинстве браузеров

1 лайк

var i = numbers.length-1;
for (var j = 0; j <= i; j++) {
var swap = numbers[j];
numbers[j] = numbers[i];
numbers[i] = swap;
i–;
}

1 лайк

Всем привет.
Без использования новой переменной для масива:

var numbers = [1, 3, 5, 7, 9, 11];

for (var i = 0; i < numbers.length / 2; i++) {  
  
  var index = numbers[i]; 
  var x = numbers[numbers.length - i - 1];
  numbers[numbers.length - i - 1] = index;
  numbers[i] = x;
  console.log(numbers);
}

Всем привет!)

Может кто-то чекнуть, насколько приемлемо мое решение? :nerd_face:

var numbers = [1, 3, 5, 7, 9, 11];
var i = 0;
var swap = numbers[i];

while ( i < numbers.length/2){
     numbers[i] = numbers[numbers.length - 1 - i];
     numbers[numbers.length - 1 - i] = swap; 
     ++i;
     swap = numbers[i];
}