我的算法的最坏情况运行时间是多少

时间:2019-03-04 22:27:59

标签: python

所以我知道我的算法在O(n)运行时中,因为它只需要遍历列表一次,但是我不知道如何计算最坏情况的运行时间。它会一直循环吗,因为无论如何循环?

 def find_duplicates(lst):
    duplist = []

    for i in range(0, len(lst)):

        if abs(lst[i]) == len(lst):
            element = -1
        else:
            element = lst[abs(lst[i])]
        if element > 0:
            lst[abs(lst[i])] = -lst[abs(lst[i])]
        elif element == 0:
            lst[abs(lst[i])] = -len(lst)
        else:
            if abs(lst[i]) == len(lst):
                duplist.append(0)
            else:
                duplist.append(abs(lst[i]))

    return duplist

2 个答案:

答案 0 :(得分:1)

是的,此函数的最差时间以及最佳和平均时间复杂度为 O(n),因为它迭代的次数与函数的大小完全相同。输入列表,无论满足哪些条件,都不会嵌套任何其他迭代。

答案 1 :(得分:1)

是的,的确是O(n)。在最坏的情况下,所有if都将失败,并且每个if块的最后一条语句都将被执行。因此,每个迭代执行6条语句。到那时,您的时间复杂度仍然是O(6n),仍然是O(n)。