Ответ
O(1) — обозначение константной временной сложности в нотации "О" большое. Это означает, что время выполнения операции (или алгоритма) не зависит от объема входных данных (n). Операция выполняется за фиксированное, постоянное время.
Ключевая характеристика: Время выполнения постоянно и не растет с увеличением размера данных.
Типичные примеры операций с O(1):
- Доступ к элементу массива или
ArrayListпо индексу.int[] array = {10, 20, 30, 40}; int value = array[2]; // O(1) — прямой расчет адреса в памяти - Вставка/удаление в начале/конце
LinkedList(если есть ссылка на узел). - Операции
put()иget()вHashMap(в среднем случае, при хорошей хеш-функции и отсутствии коллизий).Map<String, Integer> map = new HashMap<>(); map.put("key", 100); // ~O(1) Integer val = map.get("key"); // ~O(1) - Добавление элемента в
HashSet. - Выполнение простой арифметической или логической операции.
Сравнение с другими сложностями:
- O(1) vs O(n): Константная сложность всегда предпочтительнее линейной. Например, доступ по индексу в массиве (O(1)) быстрее, чем поиск элемента в неотсортированном списке перебором (O(n)).
- Важно: O(1) не означает "мгновенно", а означает, что время выполнения имеет фиксированный верхний предел, не зависящий от n.