Содержание
- 2. Основные пункты Вычислительная сложность Базовые структуры данных и их использование в С++
- 3. Вычислительная сложность Нужно как-то сравнивать ресурсы, которые будут потрачены тем или иным алгоритмом Они включают: Время
- 4. Вычислительная сложность Вариант #1 – точный подсчет, например, отдельных команд процессора Проблемы: Команды занимают разное время
- 5. Вычислительная сложность Как правило, достаточно сравнивать поведение алгоритмов в целом Вариант #2 – сравнивать общий вид
- 6. «О» большое
- 7. «О» большое Объяснение на примерах: мы говорим, что алгоритм имеет сложность O(n) операций, если с ростом
- 8. «О» большое O(n): n = 10, операций 10 n = 20, операций 20 Но так же
- 9. «О» большое Мы говорим, что алгоритм имеет сложность O(n^2) операций, если с ростом размера входных данных
- 10. «О» большое Часто можно увидеть: O(1) O(log n) O(sqrt n) O(n) O(n * log n) O(n
- 11. «О» большое Что такое n? Примеры: Определение простоты числа n: n – само число Сортировка массива:
- 12. Базовые структуры данных Массив Вектор Множество Стек Очередь Словарь
- 13. Массив Последовательность элементов фиксированного размера. Операции: Получить элемент по индексу: О(1) времени Записать элемент по индексу:
- 14. Массив в С++ int arr[100]; arr[0] = 123; // записали элемент cout
- 15. STL STL (Standard Template Library) – набор алгоритмов, контейнеров и вспомогательных функций в языке С++. Контейнеры
- 16. Вектор Массив имеет фиксированный размер, что не всегда удобно в практических ситуациях. Операции: Получить элемент по
- 17. Вектор в С++ #include vector tmp; tmp.push_back(1); tmp.push_back(2); tmp.push_back(3); cout В угловых скобках указан тип данных,
- 18. Вектор в С++ vector numbers; cin >> n; for (int i = 0; i > tmp;
- 19. Вектор в С++ vector numbers; // … for (int i = 0; i } Количество элементов
- 20. Множество Структура данных, в которой каждый элемент хранится в единственном числе. Операции: Добавить элемент в множество
- 21. Множество в С++ В С++ существует две реализации множества – set и unordered_set. Пока остановимся только
- 22. Множество в С++ #include set my_set; my_set.insert(3); my_set.insert(4); my_set.insert(3); cout В множестве два элемента: числа 3
- 23. Множество в С++ set my_set; my_set.insert(1); my_set.insert(2); my_set.erase(1); my_set.erase(2); cout Удалили все элементы
- 24. Множество в С++ set my_set; // Определим, есть ли там элемент 2 if (my_set.find(2) != my_set.end())
- 25. Множество в С++ set my_set; // Вывести все элементы множества for (auto it = my_set.begin(); it
- 26. Стек Структура данных «LIFO» (Last-In First-Out). Операции: Добавить элемент на вершину стека: O(1) Получить элемент с
- 27. Стек Названия операций: Добавить элемент: push Получить элемент на вершине: top Удалить элемент с вершины: pop
- 28. Стек в С++ stack s; s.push(1); s.push(2); s.push(3); while (!s.empty()) { cout s.pop(); } 1 2
- 29. Очередь Структура данных «FIFO» (First-In First-Out). Операции: Добавить элемент в конец очереди: O(1) Получить элемент с
- 30. Очередь Названия операций: Добавить элемент в конец: push Получить элемент в начале: front Удалить элемент в
- 31. Стек | Очередь
- 32. Очередь в С++ queue q; q.push(1); q.push(2); q.push(3); while (!q.empty()) { cout q.pop(); } 1 2
- 33. Словарь Структура данных, в которой можно сохранять и получать значения по произвольным ключам Операции: Записать значение
- 34. Словарь в С++ (map) Занимаемая память: O(n log n) Сложность операций: Получить значение по ключу: O(log
- 35. Словарь в С++ (map) #include map my_map; my_map['A'] = 5; my_map['B'] = 6; cout Обращаемся как
- 36. Словарь в С++ (map) #include map my_map; my_map['A'] = 5; if (my_map.find('A') != my_map.end()) { cout
- 38. Скачать презентацию