💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page

Сложность сортировки

23.10.2024

Оценка сложности алгоритмов сортировки

Когда мы говорим об оценке сложности алгоритмов сортировки, речь идет о том, насколько быстро и с каким количеством памяти алгоритм сможет отсортировать данные.

1. Временная сложность

  • Это про то, сколько времени понадобится алгоритму, чтобы отсортировать данные.

  • Обычно говорят в терминах O(n) O(n)O(n), O(n2) O(n^2) O(n2), где n n n — количество элементов в списке.

  • Различают:

    • Лучший случай: данные уже почти отсортированы, алгоритм работает быстрее.

    • Худший случай: данные перемешаны как попало, алгоритм работает дольше.

    • Средний случай: если взять случайные данные, алгоритм работает на средней скорости.

2. Пространственная сложность

  • Это про то, сколько памяти (оперативной) потребуется алгоритму.

  • Чем больше дополнительных данных (например, временных списков) нужно для сортировки, тем больше памяти он потребляет.

3. Примеры алгоритмов сортировки

Алгоритм
Когда работает медленнее всего
Когда работает быстрее всего
Память

Пузырьковая сортировка

Почти не тратит доп. память

Быстрая сортировка

Тратит немного доп. памяти

Сортировка слиянием

Тратит много доп. памяти

4. Как выбрать алгоритм?

  • Для маленьких списков: можно использовать простые методы (например, пузырьковая сортировка).

  • Для больших списков: лучше подходят быстрые, но сложные методы (например, быстрая сортировка или сортировка слиянием).

  • Если важна память: выбираем метод, который требует меньше памяти, например, быстрая сортировка.

5. Итог таков

  • Оценка сложности — это способ понять, какой метод лучше для конкретной задачи.

  • Если у нас большой список, то выбираем метод, который работает быстрее.

  • Если памяти мало, стараемся использовать алгоритмы, которые тратят меньше памяти.

PreviousЭмуляторы операционных системNextУровни тестирования

Last updated 7 months ago

Медленно при беспорядке

Быстро, если почти всё отсортировано

Медленно, если данные отсортированы наоборот

Обычно быстрая

Стабильно быстрая

Всегда быстро

(O(n2))( O(n^2) )(O(n2))
(O(n))( O(n) )(O(n))
(O(n2))( O(n^2) )(O(n2))
(O(nlog⁡n))( O(n \log n) )(O(nlogn))
(O(nlog⁡n))( O(n \log n) )(O(nlogn))
(O(nlog⁡n))( O(n \log n) )(O(nlogn))