Сложность времени в отсортированном массиве - PullRequest
0 голосов
/ 12 июня 2018

Учитывая отсортированный массив в порядке убывания, какова будет временная сложность удаления минимального элемента из этого массива?

================================================

Мой минимальный элемент взятия будет на последней позиции, поэтому O (n) найти его?или я должен применить бинарный поиск, так как массив отсортирован или просто O (1), чтобы достичь в конце?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Это действительно зависит от того, что вы имеете в виду «удалить из массива».У вас есть массив, отсортированный по убыванию, и вы хотите удалить минимальный элемент.

Допустим, массив равен [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).

Итак, ответ на ваш вопрос: «Это зависит».

0 голосов
/ 12 июня 2018

Поскольку массив отсортирован в порядке убывания, минимальный элемент всегда будет гарантированно находиться в последнем месте массива, при условии, что в массиве нет дубликатов.Удаление может быть сделано в O(1).

. Если вам нужно выполнить серию удалений в массиве, то вы можете настроить удаленные индексы и указать правильное конечное местоположение массива.Это может быть сделано в постоянное время.

Следовательно, чтобы подвести итог, общая сложность времени будет O(1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...