我们更改编程语言时,时间复杂度是否会改变?

时间:2018-12-25 06:05:18

标签: coding-style time-complexity

在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)

因此,时间复杂度是否会随着编程语言而改变?

1 个答案:

答案 0 :(得分:0)

不。 max(listname)始终为O(N),其中Nlistname(*)的长度。这只是根据复杂性的定义-因为迭代必须在某个地方进行-可能在您的代码中(对于C / C ++),或者在库代码中(对于Python)。

有时候我们忽略一些复杂性,通常是因为它不在我们的注意范围内;例如,Python中的x * yxy是整数)实际上不是O(1),因为xy是任意的长度在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)也是如此。