В JavaScript (несколько применимом в другом месте), где вы не знаете, в какую целевую реализацию работает ваш код, существует ли способ распознавания, если базовый алгоритм сортировки (Array.sort
) стабилен или нет, зная только что следует спецификация?
Я мог бы найти 2 теста в webkit (1) ( 2), но насколько надежны эти тесты? (Может ли эта проверка быть выполнена с помощью PCP?) Я ищу решение, которое было бы математически звуковым.
Это сложная проблема, поскольку более продвинутый алгоритм сортировки может изменять субалгоритмы в зависимости от длины исходного массива (например, Timsort). Я был сбит с толку, так как каждый прогон, который я выполнил, показал, что сортировка Google Chrome стабильна, но вся документация, которую я видел, сказала, что она неустойчива (источник сообщит вам, почему).
(Как правило, я использую эту стратегию, чтобы сделать мой ролик стабильным, он имеет небольшое, но иногда заметное влияние на производительность)
Исходный код для сортировки в различных реализациях: