---
title: Алгоритмы · часть 2
seo:
  title: Алгоритмы · часть 2 — C++ Developer
  description: Тема «Алгоритмы · часть 2» для собеседования C++ Developer. Какие алгоритмы применяли с STL? В чем преимущество использования алгоритмов перед собственноручно написанными функциями? Что такое сложность алгоритма и от чего она зависит?
---

[Все темы C++ Developer](/c-developer)

## <strong>Какие алгоритмы применяли с</strong> <code>STL</code><strong>? В чем преимущество использования алгоритмов перед собственноручно написанными функциями?</strong> [#q-14bee738d69b81048fdec4d0ebd9282e]

<strong>Применяемые алгоритмы</strong> <code>STL</code>
<strong>&#58;</strong>

1. <code>std&#58;&#58;sort</code>&#58; Сортировка элементов.

1. <code>std&#58;&#58;find</code>&#58; Поиск элемента.

1. <code>std&#58;&#58;copy</code>&#58; Копирование элементов.

1. <code>std&#58;&#58;accumulate</code>&#58; Накопление значений (сумма).

1. <code>std&#58;&#58;transform</code>&#58; Преобразование элементов.

1. <code>std&#58;&#58;for&#95;each</code>&#58; Применение функции к каждому
   элементу.

<strong>Преимущества использования алгоритмов</strong> <code>STL</code>
<strong>&#58;</strong>

1. <strong>Оптимизация</strong>&#58; Алгоритмы <code>STL</code> тщательно
   оптимизированы и протестированы на производительность.

1. <strong>Безопасность</strong>&#58; Алгоритмы обеспечивают безопасное и
   правильное выполнение операций, минимизируя вероятность ошибок.

1. <strong>Универсальность</strong>&#58; <code>STL</code> алгоритмы могут
   работать с любыми контейнерами, поддерживающими соответствующие итераторы.

1. <strong>Читаемость и поддерживаемость</strong>&#58; Код с использованием
   <code>STL</code> алгоритмов обычно короче и легче читается, что упрощает его
   поддержку и развитие.

1. <strong>Совместимость</strong>&#58; Алгоритмы <code>STL</code> хорошо
   интегрированы с остальной частью стандартной библиотеки C++.

:::note[Ссылки для изучения]

1. [Основные понятия стандартной библиотеки C++](https://habr.com/ru/articles/434986/)
   :::

---

## <strong>Что такое сложность алгоритма и от чего она зависит?</strong> [#q-14bee738d69b8128bf03f1d231483f45]

Сложность алгоритма — это оценка ресурсов, необходимых для его выполнения, таких как время и память.

#### Виды сложности&#58;

1. <strong>Временная сложность</strong>&#58; Оценивает количество шагов или
   операций, необходимых для выполнения алгоритма.

1. <strong>Пространственная сложность</strong>&#58; Оценивает объем памяти,
   требуемый алгоритмом.

#### Зависит от&#58;

1. <strong>Размер входных данных</strong>&#58; Как изменяется количество шагов
   или используемой памяти в зависимости от размера входных данных.

1. <strong>Структура данных</strong>&#58; Выбор структуры данных может повлиять
   на сложность операций.

1. <strong>Тип операций</strong>&#58; Например, поиск, сортировка, вставка и
   удаление могут иметь разную сложность для различных алгоритмов.

Big O задаёт асимптотическую верхнюю границу выбранной функции затрат. Она может описывать худший, средний или амортизированный случай, который следует назвать отдельно. O(n) означает не более линейного роста с точностью до констант, а не обязательно точный линейный рост.

:::note[Ссылки для изучения]

1. [Сложность алгоритмов в программировании](https://habr.com/ru/articles/782608/)
   :::
