Автор оригинала: FreeCodeCamp Community Member.
Отель Харрисон
Алгоритмы находятся в основе информатики. Алгоритмы, используемые для сортировки, являются одними из самых фундаментальных, полезных и, следовательно, повсеместных.
Мы постоянно и часто неосознанно сортируем и полагаемся на порядок сгруппированных объектов. Например, мы ранживаем задачи в списке в соответствии с приоритетом. Мы складываем книги на полках по их росту. Мы сортируем строки в электронной таблице или базе данных или полагаемся на алфавитный порядок слов в словаре. Иногда мы даже воспринимаем определенный вид красоты в упорядоченных договоренности.
Как программисты, зная Как Мы самым важным, потому что это влияет на то, что может выглядеть отсортированное договоренность. Не все рода заказывает объекты таким же образом! Из-за этого результаты сортировки операций различаются на основе используемых алгоритмов. Если это произойдет непризнанным, мы могли бы удивить себя или людей, которые используют наше программное обеспечение.
Устойчивость алгоритмов сортировки является одной из отличительных свойств между ними. Это касается того, как алгоритм лечит сопоставимые элементы с одинаковыми клавишами сортировки.
Стабильный алгоритм сортировки поддерживает относительный порядок элементов с одинаковыми клавишами сортировки. Нестабильный алгоритм сортировки не делает. Другими словами, когда коллекция сортируется со стабильным алгоритмом сортировки, элементы с одинаковыми клавишами сортировки сохраняют свой заказ после того, как коллекция отсортирована.
Пример, код и демо
Изображение выше иллюстрирует эффект устойчивого рода. Слева, данные были сортированы в алфавитном порядке по имени. После сортировки данных по оценке вы можете увидеть, что алфавитный порядок имени поддерживался для каждой строки с той же оценкой.
С нестабильной сортировкой нет гарантии, что алфавитный упорядочение поддерживается, как показано на изображении выше.
Вам не всегда нужен стабильный сорт
Знание того, является ли использование вида, которую вы используете, особенно важен. Особенно в ситуациях, когда ваши данные уже имеют к нему приказ о том, что вы хотели бы сохранить, когда вы сортируете его по другому ключу сортировки. Например, у вас есть строки в электронной таблице, содержащей данные студента, которые по умолчанию отсортированы по имени. Вы хотели бы также отсортировать его по оценкам, сохраняя при сохранении отсортированного порядка имен.
С другой стороны, устойчивость своего рода не имеет значения, когда клавиши сортировки объектов в коллекции являются самими объектами – на массиве целых чисел или строки, например – потому что мы не можем сказать разницу между дублированными Ключи.
// JavaScript
// $5 bucks if you can correctly tell which 4 in the sorted// array was the first 4 when the array was unsorted.
var numbers = [5, 4, 3, 4, 9];numbers.sort(); // [3, 4, 4, 5, 9]
// A one second trip around the world, courtesy of the Flash, to// whomever correctly tells me which 'harry' in the sorted array was// the second 'harry' in the unsorted array.
var names = ['harry', 'barry', 'harry', 'cisco'];names.sort(); // ['barry', 'cisco', 'harry', 'harry']
Сорты везде – знать ваши виды
Это довольно легко узнать, если по умолчанию по умолчанию в вашем языке программирования или библиотеки стабильны. Документация должна включать эту информацию. Например, Сортировка по умолчанию стабильна в Python , Нестабильный в Руби и неопределенный ? в JavaScript (Это зависит от реализации браузера).
Вот несколько распространенных алгоритмов сортировки и их стабильность:
- Сортировка вставки – стабильная
- Сортировка отбора – нестабильный
- Сортировка пузыря – стабильная
- Сортировка слияния – стабильная
- Сортировать раковину – нестабильный
- Timsort – стабильность
Смотри Википедия для более исчерпывающего списка.
Это демонстрация? ?
Это демонстрация Показывает эффект использования стабильной (вставной сортировки) и нестабильной сортировки (сортировки отбора), чтобы сортировать небольшую таблицу данных. У меня было немного весело и практически обратно инженерным реагированным при создании этого. Посмотрите на Источник Отказ
Что дальше?
Если вы хотите осторожнее для более знания о стабильности других сортировков алгоритмов, Википедия Имеет хорошую таблицу сравнения и дополнительную информацию о хорошо известных алгоритмах сортировки.
До следующего раза, мир.
Узнал что-то новое или наслаждаться читать эту статью? Хлопайте?, Поделитесь этим, чтобы другие тоже могли прочитать, и следовать еще. Не стесняйтесь оставлять комментарий тоже.
Оригинал: “https://www.freecodecamp.org/news/stability-in-sorting-algorithms-a-treatment-of-equality-fa3140a5a539/”