[英]Time complexity of simple python codes
我正在尝试比较两个简单的 Python 代码的时间复杂度。
#1st solution
m = num
cnt = 0
while m > 0:
if m % 10 == 0:
cnt = cnt + 1
m = m // 10
#2nd solution
cnt = 0
snum = str(num)
for digit in snum:
if digit == "0":
cnt = cnt + 1
我认为第一个解决方案是 O(n^2),第二个是 O(n)。 我对么?
第一个解决方案是 O(log n)。 每次迭代都会减少一个数量级。 第二个解决方案也是如此,所以它是一样的。 如果还包括代码的输出,可能会更清楚一些,例如 n=123456789 (num = 10-digit, log(n)~=10)
#!/usr/bin/env python3
num = 123456789
m = num
cnt = 0
while m > 0:
if m % 10 == 0:
cnt = cnt + 1
m = m // 10
print(str(m))
print("------------")
cnt = 0
snum = str(num)
for digit in snum:
if digit == "0":
cnt = cnt + 1
print(str(snum))
输出:
12345678
1234567
123456
12345
1234
123
12
1
0
------------
123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
123456789
O(log10base(m))如果我们将 m 视为数字,则O( len(m) )如果我们将其视为字符串。 两者都是一样的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.