Как ответили другие авторы, вам, вероятно, нужна стабильная сортировка.Стабильные алгоритмы сортировки включают
Если бы я выбрал, я бы, вероятно, пошел с сортировкой слиянием, потому что это имеет лучшую сложность.Сортировка вставок может превзойти его в небольших списках.Я помню, что читал, что есть один случай, когда Bubble Sort не страшен, но я забываю, что это такое.
Однако стоит отметить, что беспокойство по поводу стабильности исключит алгоритм, подобный быстрой сортировке, который может быть алгоритмом,неопределенный язык использует в своих функциях сортировки.
Какой бы язык вы ни использовали, его реализация сортировки должна иметь возможность взять функцию, которая будет сравнивать два элемента и определять, какой из них «больше».Так что все, что вам действительно нужно сделать, это написать функцию, которая
- Если ранги равны, утверждает, что элементы с большим числовым индексом "больше"
- Если рангине равно, утверждает, что элемент с более высоким рангом «больше».
- Если и ранг, и числовой индекс равны, утверждает, что они равны.
Это простосортировка элементов «лексикографически» с использованием любого алгоритма сортировки, поставляемого с языком, и устраняет необходимость в стабильности, предполагая, что вы можете считать два элемента равными, если они имеют одинаковый индекс.
Точный протокол, которому следует эта функциябудет варьироваться от языка к языку.