在Python中,如果需要从列表中查找最大元素。我们使用:
>>>max(listname) to get the maximum number from the list.
Time Complexity : O(1)
如果我们使用C / C ++,则
we need to iterate over the loop and get the max.
Time Complexity: O(n) or O(n square)
因此,时间复杂度是否会随着编程语言而改变?
答案 0 :(得分:0)
不。 max(listname)
始终为O(N),其中N
是listname
(*)的长度。这只是根据复杂性的定义-因为迭代必须在某个地方进行-可能在您的代码中(对于C / C ++),或者在库代码中(对于Python)。
有时候我们忽略一些复杂性,通常是因为它不在我们的注意范围内;例如,Python中的x * y
(x
和y
是整数)实际上不是O(1)
,因为x
和y
是任意的长度在Python中是有效的,因此*
操作确实会在循环中执行,但是我们确实将其简化并视为O(1),因为在大多数情况下,整数要足够小以至于不能问题。
编程语言的选择很重要,因为它会影响我们对可以忽略的内容的理解;但实际上并不会改变时间复杂度。
*)如果N
与输入大小成比例,则只有O(N);如果事先知道或受限制,则为O(1)。例如,lst = read_list(); m = max(lst)
是O(N),而lst = [1, 2, 3, 4]; m = max(lst)
是O(1),lst = read_list(); lst = lst[:4]; m = max(lst)
也是如此。