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