Это действительно зависит от того, что вы имеете в виду «удалить из массива».У вас есть массив, отсортированный по убыванию, и вы хотите удалить минимальный элемент.
Допустим, массив равен [5, 4, 3, 2, 1]
.Вы знаете, насколько большой массив, поэтому нахождение минимального элемента O (1).Вы просто индексируете a[a.length-1]
.
Но что значит удалить последний элемент?Вы можете легко заменить это значение на дозорное, чтобы сказать, что позиция больше не используется, но затем, когда вы в следующий раз попытаетесь получить минимальный элемент, вам придется посетить a[a.length-1]
, а затем выполнить обратное сканирование.найти первый использованный элемент.Это приближается к O (n), когда вы удаляете больше элементов.
Или у вас есть счетчик, который сообщает вам, сколько значений в массиве фактически используется?Таким образом, у вас есть переменная, count
, которая скажет вам, какой элемент является последним.И когда вы захотите получить минимальный элемент, у вас будет:
smallest = a[count];
count = count-1;
Это все равно O (1), но оно оставляет неиспользуемые элементы в массиве.
Но если вы хотитеубедитесь, что длина массива всегда отражает количество элементов в нем, тогда вам нужно перераспределить массив, чтобы он был меньше.Это O (n).
Итак, ответ на ваш вопрос: «Это зависит».