Меняется ли сложность времени при смене языка программирования? - PullRequest
0 голосов
/ 25 декабря 2018

В 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 голосов
/ 25 декабря 2018

Нет.max(listname) - это всегда O (N), где N - это длина listname (*).Это просто по определению сложности - потому что итерация должна где-то происходить - может быть, в вашем коде (в случае вашего C / C ++) или в коде библиотеки (в случае Python).

Иногда мы игнорировать некоторую сложность, обычно потому, что она ниже нашего внимания;например, x * y в Python (с x и y, являющимися целыми числами) на самом деле не O(1), потому что x и y имеют произвольную длину в Python, и, таким образом, операция * делаетвыполняется в циклах, но мы упрощаем и рассматриваем его как O (1), поскольку чаще всего целые числа имеют достаточно маленький размер, чтобы это не имело значения.

Выбор только языка программированияимеет значение, поскольку влияет на наше восприятие того, что мы можем игнорировать;но на самом деле это не меняет сложность времени.


*) это только O (N) в случае, если 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).

...