
Когда я впервые столкнулся с отсортированными массивами и начал осваивать алгоритмы сортировки, я задался вопросом, какие операции имеют сложность не O(1) для отсортированного массива, все элементы которого уникальны. Очевидно было, что удаление первого и последнего элемента являются простыми операциями O(1), но что насчет удаления наименьшего и наибольшего элементов? Хотя казалось логичным, что удаление наименьшего и наибольшего элементов также должно быть операцией O(1), я решил проверить это на практике. Я создал отсортированный массив с уникальными элементами и начал удалять наименьший и наибольший элементы, используя простой цикл. При удалении наименьшего элемента я заметил, что мне нужно было переставить все остальные элементы на одну позицию влево, чтобы заполнить пустое место, оставшееся после удаления. Это потребовало дополнительного времени и усилий, и я осознал, что операция удаления наименьшего элемента имеет сложность O(n), где n ‒ это размер массива. Также я проверил удаление наибольшего элемента и обнаружил, что здесь та же самая проблема ― я должен был сдвинуть все остальные элементы на одну позицию вправо перед заполнением пустого места. И снова операция удаления наибольшего элемента имела сложность O(n). Теперь, когда я знаю об этом, я могу быть более осторожным при выборе операций для работы с отсортированными массивами.