Вопрос №59546 от пользователя Art Hexlet в уроке «Сортировка массивов», курс «JS: Массивы»

Art Hexlet

Здравствуйте, вопрос по лекции.

Повторяю материал и пришел к выводу, что кое-что упустил.

Как это работает вообще?

const numbers = [8, 3, 10];
// sort изменяет массив!
numbers.sort((a, b) => a - b);

Оф док-ия:

arr.sort([compareFunction])

Указывает функцию, определяющую порядок сортировки.

Функцию я вижу, а как она работает в данном примере не пойму, и ещё она как-то не совсем для меня понятна по синтаксису вписывания (я про сокращенный вид) и как подставляются в неё аргументы?

Кажется пузырьковая сортировка имеет более сложную структуру, но я могу её прочитать и запомнить, а встроенный метод не зашёл ))

Еще вопрос, обе вышеописанные функции изменяют массив, для чего тогда такой многослойный алгоритм пузырьковой сортировки, или это только что бы уйти от встроенного метода sort()?

3 0

Вячеслав Павлов

Art Hexlet, здравствуйте.

При сравнении двух элементов a и b, сортировка работает следующим образом:

Если a - b меньше 0, функция вернёт -1, сортировка поставит a по меньшему индексу, чем b, то есть, a будет идти первым. Если a и b равны, функция вернёт 0, сортировка оставит a и b неизменными по отношению друг к другу. Если a - b больше 0, функция вернёт 1, сортировка поставит b по меньшему индексу, чем a.

sort()

1

Maksim Litvinov

Добрый день! Помог ли вам ответ Вячеслава разобраться? Он правильно ответил, как параметр функция sort() принимает функцию компаратор, которая задаёт критерий, по которому будут сравниваться два соседних элемента массива. Функция sort() берёт два соседних элемента массива и передаёт их в компаратор в качестве параметров a и b. Далее все происходит, как описал Вячеслав. Попробуйте прочитать описание по ссылке, там подробно расписано, как происходит сортировка.

Пузырьковая сортировка как правило используется только для обучающих целей, чтобы показать пример того, как работает один из алгоритмов сортировки массивов. На практике же чаще используются готовые решения для сортировки, как например метод sort()

1

Art Hexlet

Да, спасибо Максим, Вячеслав, вы очень помогли.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов для веб-приложений
11 августа 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
11 августа 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
11 августа 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов для веб-приложений
11 августа 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
11 августа 16 месяцев
Иконка программы Верстальщик
Профессия
Верстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
11 августа 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создание веб-приложений со скоростью света
11 августа 5 месяцев