По сути, сортировка работает путем сравнения двух элементов одновременно. Сравнение больше, чем логическое - у вас есть три варианта: меньше, равно и больше, чем. В JavaScript эти три значения представлены n <0, 0 и n> 0 соответственно.
Другими словами, отрицательные числа означают a < b
; 0
означает a = b
, а положительное означает a > b
.
Чтобы ответить на более широкий вопрос: существует несколько относительно быстрых алгоритмов сортировки списка путем сравнения его элементов. Наиболее популярным является Quicksort ; однако Quicksort не стабилен, поэтому некоторые движки (Firefox наверняка) используют другой алгоритм. Простая стабильная сортировка - Mergesort .
Алгоритмы сортировки часто являются одними из первых алгоритмов, проанализированных во вводных классах CS, потому что они просты, но все еще интересны и достаточно нетривиальны, чтобы проиллюстрировать, как анализировать алгоритмы в целом. Вы должны прочитать о них по этой причине и просто потому, что они довольно крутые.
Слегка случайный в стороне:
Вы могли бы также представить использование специального типа (например, enum) для такого рода вещей. Например, функция сравнения может возвращать LT
, GT
или EQ
в зависимости от ситуации. Однако в динамическом языке, таком как JavaScript, гораздо проще просто использовать числа. В языках, более одержимых типами (например, Haskell :)), использование специального типа порядка имеет больше смысла.