В настоящее время я работаю над сложностью Big-O и вычислением сложности алгоритмов.
Я, кажется, изо всех сил пытаюсь решить шаги, чтобы вычислить сложность, и искал некоторую помощь для решения этой проблемы.
Функция:
index = 0
while index < len(self.items):
if self.items[index] == item:
self.items.pop(index)
else:
index += 1
Фактическая задача состоит в том, чтобы переписать эту функцию, чтобы она имела O (n) сложность в худшем случае.
Моя проблема в том, что, насколько я думал, операторы присваивания и операторы if имеют сложность O (1), тогда как цикл while имеет сложность (n), а в худшем случае любые операторы внутри цикла while. мог выполнить n раз. Так что я работаю как 1 + n + 1 = 2 + n = O(n)
Я полагаю, что я должен работать с этим неправильно, иначе не было бы смысла переписывать функцию.
Любая помощь с этим очень ценится.