Алгоритмы сортировки
- Поиск элемента в упорядоченном наборе данных с помощью половинного деления
- Простейшая сортировка путём циклического нахождения максимума («сортировка выбором»)
- Понятие о вычислительной сложности: количество операций (сравнения, чтения, записи) как функция от общего числа элементов
- Вычислительная сложность сортировки выбором
- Сортировка вставками. Сложность для динамических (список) и статических (массив) структур данных
- Слияние двух отсортированных последовательностей. Сортировка бинарным и естественным слиянием. Оценка сложности.
«Быстрая» сортировка
Домашнее задание
Прочитать про алгоритмы сортировки (например, в Википедии)
- Реализовать любой алгоритм сортировки
- Реализовать любой «эффективный» алгоритм сортировки (имеющий сложность порядка N*log(N))
(простая олимпиадная задача) Дано очень много (N>10000000) натуральных чисел в диапазоне 1..100. Вывести их в отсортированном виде за число действий меньшее, чем N*log(N).
- Если кто не делал домашнего задания, я не виноват. Это просто сортировка подсчётом (см. соотв. статью в Википедии):
Написать визуализатор сортировки (похожий на примеры в английской Википедии) с помощью PyGame
- Не бояться часто перерисовывать весь экран (компьютер работает быстрее)
Не забывать делать pygame.display.flip() после каждой перерисовки (иначе её не будет видно)
Если компьютер всё равно работает слишком быстро, можно вставить time.sleep(доли_секунды) (из модуля time)
Нагляднее всего сортировать random.shuffle() от какого-нибудь range() и представлять массив в виде шеренги прямоугольников пропорциональной высоты
Для красоты можно менять и цвет, но это не так-то просто
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения