Попытка выполнить шаги сортировки числового массива в Javascript

Я учусь выполнять сортировку массива в Javascript по массиву чисел, я просмотрел страницу mdn и выполнил поиск, это тот вид, который я пытаюсь понять:

 var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.info(numbers);

// [1, 2, 3, 4, 5]

Я понимаю, что происходит, я просто не могу найти простую пошаговую статью о сортировке массива javascript, в которой показано, как 'a' и 'b' сравниваются и перемещаются, например, после того, как конец массив достигнут повторяется ли сортировка до тех пор, пока все элементы не будут отсортированы? Думаю, мне любопытно, как реализовать простой для понимания способ.

Чтобы добавить, я пробовал консоль регистрировать вывод, но все еще был немного сбит с толку тем, как это было сделано, поэтому ищу более конкретный ответ от кого-то, кто знает.

Вы видели это? v8.dev/blog/array-sort

Magd Kudama 02.11.2018 18:14

Возможный дубликат Как работает Javascript sort ()?

Mohammad Usman 02.11.2018 18:16
stackoverflow.com/questions/6640347/…
epascarello 02.11.2018 18:16

Ваше предположение описывает пузырьковую сортировку fyi

Slava Knyazev 02.11.2018 18:16

@MagdKudama У меня был краткий обзор, и я не уверен, что он соответствует моим простым для понимания критериям пути, но я еще раз посмотрю позже.

j obe 02.11.2018 18:23

@MohammadUsman Не совсем, если вы читаете этот пост, он не отвечает на то, что я спросил, я объяснил, что понимаю, что происходит, я ищу простое пошаговое руководство по реализации.

j obe 02.11.2018 18:25

@epascarello Этот пост относится к реализации webkit, я посмотрю, но это не похоже на то, что я ищу простое пошаговое руководство.

j obe 02.11.2018 18:27

@SlavaKnyazev Думаю? Я не догадывался.

j obe 02.11.2018 18:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
8
269
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Реализация функции sort связана с браузером

Например, реализация WebKit: https://gist.github.com/964673

Хорошо, значит, у каждого браузера есть своя реализация? полезно знать, я думал, что это стандартная вещь, определенная в языке.

j obe 02.11.2018 18:32
Ответ принят как подходящий

Используемый конкретный алгоритм сортировки не указан в спецификация; движок JavaScript может свободно использовать любой алгоритм сортировки по своему усмотрению, будь то пузырьковая сортировка, быстрая сортировка или что-то еще. Но да, алгоритмы сортировки в целом должны делать больше, чем просто один проход по данным и одно сравнение для каждого элемента. Намного больше.

Спасибо T.J. Я не понимал, что не было единственной реализации сортировки по всем направлениям. хорошо знать. Принимаю этот ответ.

j obe 02.11.2018 18:32

Метод Array.sort является встроенным. Он использует быструю сортировку на машинном языке, которая будет быстрее, чем все, что вы могли бы сделать в своем коде. У Computerphile есть хорошее видео о быстрой сортировке.

Однако любой алгоритм сортировки должен знать, какой из двух элементов идет первым, и для этого предназначена функция. Он будет передан любым двум элементам массива, которые сравниваются в этот момент в общем алгоритме, и вернет:

отрицательное число: первый аргумент должен быть отсортирован первым. положительное число: второй аргумент должен сортировать первым. ноль: они равны.

Надеюсь, это проясняет!

Я посмотрю видео, спасибо, я понимаю, что происходит, я просто ищу пошаговое руководство по реализации javascript array.sort.

j obe 02.11.2018 18:31

Если хотите посмотреть, что происходит, поставьте какой-нибудь логирование внутри функции сравнения:

var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  console.info("["+numbers.join()+"], comparing element #"+numbers.indexOf(a)+" ("+a+") and #"+numbers.indexOf(b)+" ("+b+"): "+(a-b));
  return a - b;
});
console.info(numbers.join());

Затем, проявив немного терпения, вы сможете отследить, как движутся элементы, и распознать алгоритм сортировки в действии.

Я пробовал это, но забыл упомянуть об этом в исходном вопросе. Я не понимал порядка вывода и искал что-то конкретное, где это уже было объяснено.

j obe 02.11.2018 18:29

Другие вопросы по теме