Читая о различных алгоритмах сортировки, я заметил, что некоторые из них «стабильны», а некоторые нет. Что это значит, и какие компромиссы связаны с этим при выборе алгоритма?
Читая о различных алгоритмах сортировки, я заметил, что некоторые из них «стабильны», а некоторые нет. Что это значит, и какие компромиссы связаны с этим при выборе алгоритма?
Ответы:
Стабильная сортировка - это та, которая сохраняет исходный порядок входного набора, где алгоритм сравнения не различает два или более элементов.
Рассмотрим алгоритм сортировки, который сортирует карты по рангу , но не по масти. Стабильная сортировка гарантирует, что первоначальный порядок карт одинакового ранга сохраняется; нестабильная сортировка не будет.
Стабильные алгоритмы сохраняют относительный порядок элементов.
Таким образом, алгоритм стабильной сортировки сохранит относительный порядок значений, которые сравниваются как равные.
Рассмотрим алгоритм сортировки, в котором мы сортируем коллекцию двумерных точек на основе их X-измерения.
Коллекция для сортировки: {(6, 3), (5, 5), (6, 1), (1, 3)}
Стабильный Сортировка: {(1, 3), (5, 5), (6, 3), (6, 1)}
Обычная Сортировка: Либо {(1, 3), (5, 5), (6, 3), (6, 1)}
, или{(1, 3), (5, 5), (6, 1), (6, 3)}
Что касается компромисса ... ну, стабильная сортировка менее эффективна, но иногда она вам нужна.
Например, когда пользователь щелкает заголовок столбца для сортировки значений в пользовательском интерфейсе, разумно ожидать, что его предыдущий порядок сортировки будет использоваться в случае равных значений.