Предположим, что у меня есть список вещей (числа, чтобы все было просто), и у меня есть функция, которую я хочу использовать для сортировки, используя SortBy. Например, следующий вид списка чисел по последней цифре:
SortBy[{301, 201}, Mod[#,10]&]
И обратите внимание, как два (из всех) этих чисел имеют одинаковую последнюю цифру. Поэтому не имеет значения, в каком порядке мы их возвращаем. В этом случае Mathematica возвращает их в обратном порядке. Как я могу обеспечить, чтобы все связи были нарушены в пользу того, как элементы были заказаны в исходном списке?
(Я знаю, что это немного тривиально, но я чувствую, что это время от времени возникает, поэтому я подумал, что было бы удобно получить его на StackOverflow. Я опубликую все, что придумаю, как ответ, если никто не бьет я к нему.)
Попытка сделать это более доступным для поиска: сортировать с минимальным возмущением, сортировать с наименьшим количеством свопов, настраивать разбиение на разделы, сортировать с дорогостоящей заменой, стабильную сортировку.
PS: Благодаря Nicholas за то, что это называется стабильной сортировкой. Это было на кончике моего языка! Здесь другая ссылка: http://planetmath.org/encyclopedia/StableSortingAlgorithm.html