Вызов:
Учитывая массив элементов, вернуть перетасованный массив элементов. Сохраняйте линейную сложность.
Подход:
нам нужно случайным образом изменить положение каждого элемента в предоставленном массиве. Чтобы снизить сложность, нам нужно перебирать каждый элемент только один раз. У нас может быть переменная-счетчик для перемещения по индексам массива, который необходимо изменить в данный момент, и заменять этот элемент значением по случайно определенному индексу.
Решение:
Давайте создадим вспомогательную функцию, которая поможет нам поменять местами значения в одном и том же массиве с разными индексами.
var swap = function(a, b, arr){
var temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
return arr;
}
Теперь, основываясь на нашем подходе, мы можем перебирать массив, используя эту функцию подкачки, для случайного изменения значений.
var shuffleArray = function(array) {
var length = array.length;
while(length > 0){
let i = Math.floor(Math.random()*length)
length--
swap(length, i, array)
}
return array;
};
И вот у вас есть перетасованный массив практически случайным образом.