14. Методы внутренней сортировки
сортиро́вка пузырько́м (англ. bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²).
Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяется сортировка вставками.
Алгоритм
Пример сортировки пузырьком списка случайных чисел.
Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.
Сортировка перемешиванием (Шейкерная сортировка) (англ. Cocktail sort) - разновидность пузырьковой сортировки. Анализируя метод пузырьковой сортировки можно отметить два обстоятельства.
Во-первых, если при движении по части массива перестановки не происходят, то эта часть массива уже отсортирована и, следовательно, ее можно исключить из рассмотрения.
Во-вторых, при движении от конца массива к началу минимальный элемент “всплывает” на первую позицию, а максимальный элемент сдвигается только на одну позицию вправо.
Эти две идеи приводят к следующим модификациям в методе пузырьковой сортировки. Границы рабочей части массива (т.е. части массива, где происходит движение) устанавливаются в месте последнего обмена на каждой итерации. Массив просматривается поочередно справа налево и слева направо.
Лучший случай для этой сортировки - отсортированный массив (О(n)), худший - отсортированный в обратном порядке (O(n²)).
Сортировка вставками — простой алгоритм сортировки. Хотя этот метод сортировки намного менее эффективен, чем более сложные алгоритмы (такие как быстрая сортировка), у него есть ряд преимуществ:
прост в реализации;
эффективен на небольших наборах данных, на наборах данных до десятков элементов может оказаться лучшим;
эффективен на наборах данных, которые уже частично отсортированы;
это устойчивый алгоритм сортировки (не меняет порядок элементов, которые уже отсортированы);
может сортировать список по мере его получения;
не требует временной памяти, даже под стек.
На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора. Обычно (и с целью получения устойчивого алгоритма сортировки), элементы вставляются по порядку их появления во входном массиве. Приведенный ниже алгоритм использует именно эту стратегию выбора.
Сортировка слиянием (англ. merge sort) — алгоритм сортировки, который упорядочивает списки (или другие структуры данных, доступ к элементам которых можно получать только последовательно, например — потоки) в определённом порядке. Эта сортировка — хороший пример использования принципа «разделяй и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, и получается решение исходной задачи.
Для решения задачи сортировки эти три этапа выглядят так:
1) Сортируемый массив разбивается на две части примерно одинакового размера;
2) Каждая из получившихся частей сортируется отдельно, например - тем же самым алгоритмом;
3) Два упорядоченных массива половинного размера соединяются в один.
Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным).
Сортировка с помощью двоичного дерева (сортировка двоичным деревом, сортировка деревом, древесная сортировка, сортировка с помощью бинарного дерева, англ. tree sort) - универсальный алгоритм сортировки, заключающийся в построении двоичного дерева поиска по ключам массива (списка), с последующей сборкой результирующего массива путём обхода узлов построенного дерева в необходимом порядке следования ключей. Данная сортировка является оптимальной при получении данных путём непосредственного чтения с потока (например с файла, сокета или консоли).
- 1. Классификация элементов и узлов эвм
- 2.Арифметические основы эвм. Типы данных, представление, перевод чисел коды чисел -пряиой обратный дополнительный
- 5. Методы адресации, выполнение команд, прерывания, переместимость.
- 6.Микропроцессоры, микро и мини эвм, ес эвм, семейства эвм[1,2]..............
- 7. Персональные эвм,обзор основных типов,аппаратные елементы
- 8. Организация наборов данных- методы доступа в наборах, записи, блоки, форматы [5,16].....
- 9. Фунции и состав типичной операционной системы, режимы работы
- 10 Основные команды операционной системы
- 11.Классификация структур данных, задачи обработки, массивы,.Списки
- 12.Древовидные и табличные структуры.
- 13.Методы поиска в массиве
- 14. Методы внутренней сортировки
- 15.Внешняя сортировка наборов данных
- 16.Жизненный цикл программы, тз..
- 17.Методы проектирования программ
- 18.Методы тестирования и отладки программ
- 19.Понятие о технологии программирования.Качество по
- 20.Классификация и основы построения по
- 21.Банки данных, архитектура бд
- 22.Субд и их функции.
- 23.Реляционная алгебра и обработка данных
- 24.Пакеты прикладных программ
- 25.Информационно-поисковые системы.
- 26.Системы искусственного интеллекта.Диалог с пользователем
- 27.Программная документация.
- 28.Основные понятия сапр-функциональное и системное наполнение
- 29.Локальные сети, протоколы
- 30.Основные методы решения уравнений
- 30.Основные методы решения уравнений
- 31.Квадратурные формулы, решение задачи Коши
- 32.Структурное программирование