Алгоритмы

Алгоритмы


BigO Прказывает кк будет меняться производительность алгоритма от роста исходных данных

Time, memory (Время, память)

  • Worst case (выбирается худший случай)
  • Average case
  • Best case

Правильно говорить алгоритм работает со сложностью:

O(n) - линейная зависимость (с ростом входящих данных растет время) (обычный перебор)

O(1) - время константа, с ростом данных остается неизменным (намного лучше линейной сложности) (если есть возможность перенести данные транспортом как пример)

O(log n) - логарифмическая сложность (быстрая сортировка)

O(n log n)

O(n²) квадратичная сложность (два вложенных цикла)

O(n³) кубическая (3 вложенных цикла)

O(2ⁿ) экспоненциальная сложность (расчет n-ого числа Фибоначи)

O(n!) (задача о комивояжере должен посетить все пункты хотябы по разу и вернуться в исходный)

Константы при умножении и делении отбрасываются, при сложении выбирается самый неэффективный алгоритм


Поиск

  • Линейный поиск O(n)
  • Бинарный поиск O(log₂n)

Сортировка

  • Алгоритм выбора O(n²) (неэффективный) (пробегаем по массиву, находим минимальное значение и меняем местами с первым, затем начиная со второго элемента ищем следующее минимальное но меняем его уже со вторым элементом и т.д.)
  • Пузырьком O(n²) (неэффективный) сравниваем попарно стоящие элементы, если следующий элемент меньше чем предыдущий меняем местами, получается своего рода всплытие )
  • Быстрая сортировка O(log₂n * n)


Report Page