Сортировки

Сортировка - это процесс упорядочивания множества по определённом признаку. В страницах этого раздела представлены различные алгоритмы сортировок, имеющие свои преимущества и недостатки. Каждая сортировка детально разобрана, включая асимптотику, принцип работы, сильные/слабые стороны.

Сортировка является одной из фундаментальных проблем (задач) проектирования алгоритмов. Многие эффективные алгоритмы используют сортировку в качестве подпрограммы, поскольку зачастую легче обрабатывать данные, если они расположены в отсортированном порядке.

Обращение к ленивым/плохо понимающим сортировки людям! Просьба не копипастить код с сортировок в лабораторные, потому что тогда вы все получите бан за списывание. Вам нужно понять принцип работы и писать свой код, не подглядывая, а не просто перепечатывать код с сайта в лабу!

Любой алгоритм сортировки, который использует только сравнения элементов массива, не может быть быстрее, чем . Это доказательство было представлено в 1964 году Клаусом Янсеном (Klaus Janson) и Микелем Патерсоном (Michael Paterson). Однако, есть некоторые алгоритмы сортировки, которые не используют сравнения элементов массива и могут работать быстрее , например, поразрядная сортировка (radix sort) и сортировка подсчетом (counting sort).

Устойчивость сортировки

Алгоритм сортировки считается устойчивым, если два объекта с одинаковыми ключами располагаются в сортируемом выходном массиве в том же порядке, в каком они располагаются во входном массиве, подлежащем сортировке. Другими словами, "стабильный" алгоритм сортировки сохраняет порядок элементов с одинаковым ключом сортировки.

Пример :

Сортировка в алфавитном порядке по первой букве слова.

peach
straw
apple
spork

Результат стабильной сортировки :

apple
peach
straw
spork

В алгоритме неустойчивой сортировки straw и spork могут меняться местами, а в устойчивом алгоритме они остаются в тех же относительных позициях (т.е. поскольку в исходном массиве straw оказывается раньше spork, то и на выходе она оказывается раньше spork).

! Нестабильная сортировка может дать такой-же ответ как и стабильная сортировка.

Зачем это???

Иногда стоит выбрать нужную сортировку, чтобы сохранить порядок.

На самом деле мы можем сортировать пары со значением и индексом. Например, в примере выше, если мы представим слова, как (p, 0), (s, 1), (a, 2), (s, 3).

Last change: 2023-10-16, commit: 0f1c938