Вопрос №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

Максим Литвинов

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

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

1

Art Hexlet

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

0

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

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

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

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

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

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

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