Алгоритм сортировки называется стабильным , если два объекта с одинаковыми ключами появляются в одинаковом порядке в отсортированном выводе, как они появляются во входном массиве для сортировки. Некоторые алгоритмы сортировки по своей природе стабильны, такие как сортировка вставкой, сортировка слиянием, сортировка по пузырям и т. Д. А некоторые алгоритмы сортировки не являются, например сортировка по кучи, быстрая сортировка и т. Д.
Фон : «стабильный» алгоритм сортировки поддерживает порядок элементов с одинаковым ключом сортировки. Предположим, у нас есть список из 5 букв:
peach
straw
apple
spork
Если мы отсортируем список только по первой букве каждого слова, тогда стабильная сортировка даст:
apple
peach
straw
spork
В алгоритме сортировки unstable , straw
или spork
могут быть взаимозаменяемы, но в стабильном они остаются в тех же относительных позициях (то есть, поскольку straw
появляется раньше spork
на входе, он также появляется перед spork
на выходе).
Мы могли бы отсортировать список слов, используя этот алгоритм: стабильная сортировка по столбцу 5, затем 4, затем 3, затем 2, затем 1.
В итоге все будет правильно отсортировано. Убедите себя в этом. (кстати, этот алгоритм называется radix sort)
Теперь, чтобы ответить на ваш вопрос, предположим, у нас есть список имен и фамилий. Нас просят отсортировать «по фамилии, потом по имени». Мы могли бы сначала отсортировать (стабильный или нестабильный) по имени, затем стабильную сортировку по фамилии. После этих сортировок список в первую очередь сортируется по фамилии. Однако, если фамилии совпадают, имена сортируются.
Вы не можете складывать нестабильные сортировки таким же образом.