Задать вопрос
@DanceMonkeyTime

Как просортовать массив?

Привет.
Есть массив - [0,1,0,1]
Его нужно отсортировать таким образом, что-бы 0 или 1 были в концах ( неважно в каких ) и вывести число, за сколько шагом мы его отсортировали.

Результатом должно быть - 1. То есть 1 шаг. [0,0,1,1]
Эту сортировку нужно сделать за наиболее меньше шагов. То есть мы могли отсортировать этот массив так что-бы [1,1,0,0] , но занято бы много шагом ( >1).

Еще один пример, когда в массиве не только 0 и 1.
[8,1,1,1,1,0,0,0,0]- тут нам не надо ничего сортировать, поэтому результат должен быть - 0.

Мой пример
function minMoves(arr) {
    let j = -1;
    let result = 0;
    const filteredArray = arr.filter(el => el === 1 || el === 0);
    for(let i = 0; i < filteredArray.length; i++) {
        if(filteredArray[i] < 1) {
            j++;
            let temp = filteredArray[j];
            filteredArray[j] = filteredArray[i];
            filteredArray[i] = temp;
            result += 1;
        }
    }
    
    return result;
}


Но в моем примере оно начинает его сортировать если все хорошо [1,1,1,1,0,0,0] = [0,0,0,1,1,1,1]
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 1
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Почему бы просто не добавить счётчик в функцию-коллбек для array.sort ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы