Я учусь выполнять сортировку массива в 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' сравниваются и перемещаются, например, после того, как конец массив достигнут повторяется ли сортировка до тех пор, пока все элементы не будут отсортированы? Думаю, мне любопытно, как реализовать простой для понимания способ.
Чтобы добавить, я пробовал консоль регистрировать вывод, но все еще был немного сбит с толку тем, как это было сделано, поэтому ищу более конкретный ответ от кого-то, кто знает.
Возможный дубликат Как работает Javascript sort ()?
Ваше предположение описывает пузырьковую сортировку fyi
@MagdKudama У меня был краткий обзор, и я не уверен, что он соответствует моим простым для понимания критериям пути, но я еще раз посмотрю позже.
@MohammadUsman Не совсем, если вы читаете этот пост, он не отвечает на то, что я спросил, я объяснил, что понимаю, что происходит, я ищу простое пошаговое руководство по реализации.
@epascarello Этот пост относится к реализации webkit, я посмотрю, но это не похоже на то, что я ищу простое пошаговое руководство.
@SlavaKnyazev Думаю? Я не догадывался.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Реализация функции sort связана с браузером
Например, реализация WebKit: https://gist.github.com/964673
Хорошо, значит, у каждого браузера есть своя реализация? полезно знать, я думал, что это стандартная вещь, определенная в языке.
Используемый конкретный алгоритм сортировки не указан в спецификация; движок JavaScript может свободно использовать любой алгоритм сортировки по своему усмотрению, будь то пузырьковая сортировка, быстрая сортировка или что-то еще. Но да, алгоритмы сортировки в целом должны делать больше, чем просто один проход по данным и одно сравнение для каждого элемента. Намного больше.
Спасибо T.J. Я не понимал, что не было единственной реализации сортировки по всем направлениям. хорошо знать. Принимаю этот ответ.
Метод Array.sort является встроенным. Он использует быструю сортировку на машинном языке, которая будет быстрее, чем все, что вы могли бы сделать в своем коде. У Computerphile есть хорошее видео о быстрой сортировке.
Однако любой алгоритм сортировки должен знать, какой из двух элементов идет первым, и для этого предназначена функция. Он будет передан любым двум элементам массива, которые сравниваются в этот момент в общем алгоритме, и вернет:
отрицательное число: первый аргумент должен быть отсортирован первым. положительное число: второй аргумент должен сортировать первым. ноль: они равны.
Надеюсь, это проясняет!
Я посмотрю видео, спасибо, я понимаю, что происходит, я просто ищу пошаговое руководство по реализации javascript array.sort.
Если хотите посмотреть, что происходит, поставьте какой-нибудь логирование внутри функции сравнения:
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());Затем, проявив немного терпения, вы сможете отследить, как движутся элементы, и распознать алгоритм сортировки в действии.
Я пробовал это, но забыл упомянуть об этом в исходном вопросе. Я не понимал порядка вывода и искал что-то конкретное, где это уже было объяснено.
Вы видели это? v8.dev/blog/array-sort