Вопрос №59546 от пользователя Art Hexlet в уроке «Сортировка массивов», курс «JS: Массивы»
Здравствуйте, вопрос по лекции.
Повторяю материал и пришел к выводу, что кое-что упустил.
Как это работает вообще?
const numbers = [8, 3, 10];
// sort изменяет массив!
numbers.sort((a, b) => a - b);
Оф док-ия:
arr.sort([compareFunction])
Указывает функцию, определяющую порядок сортировки.
Функцию я вижу, а как она работает в данном примере не пойму, и ещё она как-то не совсем для меня понятна по синтаксису вписывания (я про сокращенный вид) и как подставляются в неё аргументы?
Кажется пузырьковая сортировка имеет более сложную структуру, но я могу её прочитать и запомнить, а встроенный метод не зашёл ))
Еще вопрос, обе вышеописанные функции изменяют массив, для чего тогда такой многослойный алгоритм пузырьковой сортировки, или это только что бы уйти от встроенного метода sort()?
Art Hexlet, здравствуйте.
При сравнении двух элементов a и b, сортировка работает следующим образом:
Если a - b
меньше 0, функция вернёт -1
, сортировка поставит a
по меньшему индексу, чем b
, то есть, a
будет идти первым.
Если a и b
равны, функция вернёт 0
, сортировка оставит a и b
неизменными по отношению друг к другу.
Если a - b
больше 0, функция вернёт 1, сортировка поставит b по меньшему индексу, чем a.
Добрый день! Помог ли вам ответ Вячеслава разобраться? Он правильно ответил, как параметр функция sort() принимает функцию компаратор, которая задаёт критерий, по которому будут сравниваться два соседних элемента массива. Функция sort() берёт два соседних элемента массива и передаёт их в компаратор в качестве параметров a
и b
. Далее все происходит, как описал Вячеслав. Попробуйте прочитать описание по ссылке, там подробно расписано, как происходит сортировка.
Пузырьковая сортировка как правило используется только для обучающих целей, чтобы показать пример того, как работает один из алгоритмов сортировки массивов. На практике же чаще используются готовые решения для сортировки, как например метод sort()
Да, спасибо Максим, Вячеслав, вы очень помогли.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







