Содержание
- 2. Два классических алгоритма сортировки Критические компоненты в мировой вычислительной инфраструктуре Понимание научных основ этих алгоритмов даст
- 4. Быстрая сортировка Основной план Перемешать элементы случайным образом Разбиение для элемента j a[j] оставить на месте
- 5. Быстрая сортировка Повторять до тех пор, пока i и j не пересекутся Проверять i-ые элементы до
- 6. Быстрая сортировка: реализация разбиения на Java
- 7. Быстрая сортировка: реализация на Java
- 8. Быстрая сортировка
- 9. Быстрая сортировка
- 10. Быстрая сортировка: реализация Не требует дополнительной памяти Выход из циклов. Обращайте особое внимание на условия выхода
- 11. Быстрая сортировка: эмпирический анализ Оценка времени выполнения: На ПК 108 сравнений/секунду На суперкомпьютере 1012 сравнений/секунду Вывод
- 12. Быстрая сортировка: лучший случай Лучший случай. Количество сравнений ~ N log2N
- 13. Быстрая сортировка: худший случай Худший случай. Количество сравнений ~ ½ N2
- 14. Быстрая сортировка: средний случай
- 15. Быстрая сортировка: свойства Худший случай. Квадратичное количество сравнений N + (N-1) + (N-2) + … +
- 16. Быстрая сортировка: свойства Утверждение. Быстрая сортировка не требует дополнительной памяти Доказательство Разделение требует дополнительную память размером
- 17. Быстрая сортировка: реализация Используйте сортировку вставками для маленьких подмассивов Быстрая сортировка очень дорогая для маленьких подмассивов
- 18. Быстрая сортировка: реализация Разбиение по медиане Поиск медианы из небольшой выборки элементов Медиана из 3-х случайных
- 19. Быстрая сортировка с сортировкой вставками и медианой из 3-х
- 20. Выбор (Selection)
- 21. Выбор Цель. В массиве размером N, найти k-й наименьший элемент Пример. Min (k = 0), max
- 22. Быстрый выбор (Quick-select) Разделение массива a[j] остается на месте Слева нет элемента больше j Справа нет
- 23. Быстрый выбор: математический анализ Утверждение. Quick-select в среднем работает за линейное время Доказательство Каждый шаг делит
- 24. Быстрый выбор Утверждение. Алгоритм выбора, основанный на сравнении, в худшем случае работает за линейное время Замечание.
- 25. Повторяющиеся ключи
- 26. Повторяющиеся ключи Часто приходится сортировать данные с повторяющимися ключами По возрасту людей Удалять повторяющиеся письма По
- 27. Быстрый выбор (Quick-select) Сортировка слиянием для массива с дубликатами. От ½ N log2N до N log2N
- 28. Проблема повторяющихся ключей Ошибка. Все элементы остаются на одной стороне Результат. ~ ½ N2 сравнений, когда
- 29. Трехчастное разбиение Цель. Делим массив на 3 части Элементы между lt и gt, равные центральному элементу
- 30. Трехчастное разбиение Дейкстры Берем v равное a[lo] Сканируем i слева на право (a[i] (a[i] > v):
- 31. Трехчастное разбиение Дейкстры
- 32. Трехчастное разбиение Дейкстры: реализация на Java
- 33. Трехчастное разбиение Дейкстры: трассировка
- 34. Повторяющиеся ключи: нижняя граница
- 35. Применение сортировок
- 36. Применение сортировок
- 37. Сортировки в Java Arrays.sort() Есть особые методы для примитивных типов Методы для типов данных реализованных с
- 39. Применение сортировок на практике Основной алгоритм — Q-sort Сортировка вставками для маленьких подмассивов Трехчастное разбиение Разбиение
- 40. Девятки Тьюки Медиана из трех медиан из трех Аппроксимация медианы из 9-ти Использует не более 12
- 41. Переполнение стека в Java Переполнение стека рекурсии в Java рушит программу Выполнение программы за квадратичное время
- 43. Какую сортировку выбрать? Атрибуты Стабильность Параллелизм Детерминированность Дубликаты Типы ключей Связный список или массив Количество элементов
- 45. Скачать презентацию