2013-02-25 3 views
0
def findTarget(myList, target): 

    count = 0 

    for item in myList: 

     if (target == item): 

       count = count + 1 

    return count 

мне сказали это 0 (журнал) п хотя я считаю, что это 0 (1)? может кто-то подтвердить или опровергнуть?сложность выполнения функции подсчета

+0

Почему вы считаете, что это работает в постоянное время? *** O *** (* n *) – Johnsyweb

+2

В будущем напишите соответствующие заголовки. – 2013-02-25 02:18:22

+0

Учитывая ваш текущий вопрос, мы можем только сказать вам, что вы ошибаетесь. Если бы вы могли объяснить, почему, по вашему мнению, это работает в O (1) раз, мы можем сказать вам, почему вы ошибаетесь, что было бы более полезно для вас и для других, читающих этот сайт. – senderle

ответ

7

В вашей петле N сравниваются и меньше N добавок, что приводит к максимальным операциям 2 * N, которые дают вам алгоритм O (N).

Обратите внимание, что для списков, это встроенный метод:

myList.count(item) 

, который будет толкать петлю в C код - это еще O (N), но я уверен, что версия будет работать кучу быстрее ваша версия :).

Смежные вопросы