На финском языке мы сортируем W
после V
(как на английском языке), но поскольку W
не является родной финской буквой, он рассматривается как вариант V
, который сортируется как равный V
, но в тех случаях, когда единственное различие между двумя словами состоит в том, что V
есть W
, тогда V
-версия сортируется первой. Пример иллюстрирует правильный порядок:
Vatanen, Watanen, Virtanen
На финском языке V
и W
сопоставляются как A
и Á
. Á
сортируется, как A
, но в тех случаях, когда это единственное различие, первый невозможен. Это же правило для всех других букв с акцентом, но Å
, Ä
и Ö
сопоставляются отдельно после Z.
Вопрос: Каким будет лучший алгоритм для сортировки этого типа вариантов предопределенным образом? (например. [Watanen, Vatanen, Virtanen]
to [Vatanen, Watanen, Virtanen]
)?
Дополнение: вопрос имеет значение для распространения и других вариантов в том, как они определены в http://cldr.unicode.org/index/cldr-spec/collation-guidelines, поскольку с большой вероятностью, будут одинаковыми, и ответы на этот вопрос помогут использовать максимально широкую аудиторию и алгоритмы сортировки, которые могут быть совместимы с правилами сортировки, определенными в Unicode CLDR. CLDR Unicode определяет три уровня различий между буквами: начальный уровень (базовые буквы), вторичный уровень (буквы с акцентом) и третичный уровень (случай символа).
Я подумал о какой-то подготовке массива , как в численном виде, где мы могли бы заполнить все числа нулями, чтобы они сравнивались как строки. Пример: Array [file1000.jpg, file3.jpg, file22.jpg]
может быть подготовлен, чтобы сделать его сопоставимым, как строки, путем заполнения нулями таким образом: [file1000.jpg, file0003.jpg, file0022.jpg]
. Из-за подготовки массива мы можем сортировать его очень быстро, используя собственный массив Array.sort().
Целевым языком является Javascript, который не поддерживает поддержку сортировки, поэтому пользовательская функция сортировки должна быть сделана сама. Алгоритм предпочтителен, но если у вас есть код, он стоит +1.