
- •Понятие «сортировка». Устойчивость сортировки.
- •Задача сортировки.
- •Понятие «ключевое поле» в сортировке.
- •Понятие внутренней сортировки.
- •Понятие внешней сортировки.
- •Причины изучения алгоритмов сортировки.
- •Группы алгоритмов внутренней сортировки.
- •Основные идеи методов сортировок с помощью вставок.
- •2)Улучшение метода простых вставок:
- •Сортировка методом простых вставок.
- •Основные идеи методов сортировок с помощью выбора.-min эл.
- •Сортировка с помощью метода прямого выбора.
- •Основные идеи методов сортировки с помощью обмена.
- •Сортировка методом Шелла.
- •Быстрая сортировка.-разобрать
- •Понятие эффективности алгоритмов и программ.
- •Виды эффективности алгоритмов программ.
- •Порядок сложности алгоритма.
- •Понятие «доминирующая» функция, «асимптотически доминирующая» функция.
- •Правила определения сложности функции.
- •Доминирование функций друг над другом.-разобрать хрень!!!
- •Понятие алгоритма полиноминальной сложности.
- •Понятие алгоритма неполиноминальной сложности.
- •Вопрос 27.
- •Проблемы реализации np-сложных алгоритмов.
- •Вопрос 27.
- •Соответствие между скоростью выполнения алгоритма и его сложностью.
- •Анализ лучшего, худшего и среднего случаев поведения алгоритма.
- •31* Ограниченность о-анализа.
- •Пространственная сложность программы.
- •Взаимосвязь различных типов сложности.
- •Контрольные замеры.
- •Файлы. Их организация и обработка.
- •Стоимость операций с вторичной памятью.
- •Внешняя сортировка. Особенности внешней сортировки.
- •Понятие «серия», «слияние», «хвост», «фаза», «этап» в алгоритмах внешней сортировки.
- •38* Алгоритм 2-х фазной сортировки прямым слиянием.
- •Алгоритм однофазной сортировки прямым слиянием.
- •Алгоритм сортировки «естественным слиянием».
- •Ускорение сортировок прямым слиянием.
- •Задача поиска.
- •Классификация методов поиска.
- •Связь задач сортировки и поиска.
- •Последовательный поиск.
- •Быстрый последовательный поиск.
- •Последовательный поиск в упорядоченной таблице. Поиск путем сравнения ключей.-херня!
- •Бинарный поиск. Интерполяционный поиск.
- •Хеширование Выбор хеш-функций.
- •Хеширование. Разрешение коллизий.
Сортировка с помощью метода прямого выбора.
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.
Основные идеи методов сортировки с помощью обмена.
Основная идея заколючается в том, чтобы менять местами два соседних элемента, если их расположение не удовлетворяет условию сортировки. Таким образом, за первый проход самый большой элемент будет в конце (или в начале) сортируемого множества. Дополнительно можно проверять наличие обмена элементов на каждом проходе, чтобы не делать лишние проходы. По сути быстрая сортировка является модификацией этого метода.
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом "пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.
Все сортировки основаны на обмене значений эл-ов. Поэтому рассматриваемая нами классификация алгоритмов сортировки не является слишком строгой.
В семействе алгоритмов относящихся по этой классификации к обменным сорировкам обмен значений является основной операцией. Поэтому алгоритмы и названы алгоритмы обменной сортировки.
Наиболее известными из этого семейства алгоритмов явл. метод прямого обмена кот. известнее под названием метод пузырька.
Сортировка методом прямого обмена.
Массив b1…bi-1bi…bn. Справа налево сравниваем эл. и его соседний.
Наиболее известным из этого семейства алгоритмов явл метод прямого обмена, кто известен под названием «метод пузырька».
Метод пузырька .
6392610 прогоняем0 0|639261 прогоняем1 01|63926 0163926 прогоняем2 012|6396 0126369 0123|669 0123669 01236|69 012366|9
Улучшенный метод простых вставок.-бинарная
Улучшение метода простых вставок:
Для поиска места вставляемого эл-та исп. метод двоичного поиска, метод деления пополам.
b1 b2 b3 b4 b5a
Делим отсортированную часть пополам
2 2 8 7 4 6 9
2 2 8 7 4 6 9
2 2 8 7 4 6 9
2
2 7 8 4 6 9
2 2 4 7 8 6 9
2 2 4 6 7 8 9
2 2 4 6 7 8 9
Улучшения метода пузырька.
Улучшение метода пузырька:
Нужно запоминать осуществлялись ли перестановки в процессе некоторого прохода. Если в последнем проходе перестановок не было, то алгоритм можно заканчивать.
Мы запоминаем индекс с последним обменом. И все эл до индекса явл уже упорядоченными. И в этом случае отсортированную часть можно увеличить не на 1 эл, а до эл-та с последним обменом.
Алгоритм шейкерной сортировки.
Плохо расположенный эл. с большим знач. ключа будет перемещаться на свое место т. на 1 шаг при каждом проходе.
Нужно чередовать направление последовательных просмотров и полученный алгорит наз. алгоритмом шейкерной сортировки.
3 7 2 9 1 6 5 1 4 8 8
3 7 2 9 1 6 1 5 4 8 8
3 7 2 9 1 1 6 5 4 8 8
3 7 2 1 9 1 6 5 4 8 8
3 7 1 2 9 1 6 5 4 8 8
3 1 7 2 9 1 6 5 4 8 8
1 |3 7 2 9 1 6 5 4 8 8
1 3 2 7 9 1 6 5 4 8 8
1 3 2 7 1 9 6 5 4 8 8
1 3 2 7 1 6 9 5 4 8 8
1 3 2 7 1 6 5 9 4 8 8
1 3 2 7 1 6 5 4 9 8 8
1 3 2 7 1 6 5 4 8 9 8
1 3 2 7 1 6 5 4 8 8| 9
И т.д. в одну и другую сторону.