0
def f2(lst):
i = len(lst)
while i>0:
for j in range(i, i+10**8):
for k in range(i):
print(k)
i -= 2
什麼是時間複雜度?而將運行n/2次,但其餘的呢?循環的時間複雜度是多少?
def f2(lst):
i = len(lst)
while i>0:
for j in range(i, i+10**8):
for k in range(i):
print(k)
i -= 2
什麼是時間複雜度?而將運行n/2次,但其餘的呢?循環的時間複雜度是多少?
答案是O(n^2)
。
第一個循環是〜n,第二個循環是恆定時間,第三個循環是〜n。
正如你所說,while
循環將迭代n/2
次,因此具有O(n)
複雜性。
第一個for
循環(for j in range(i, i+10**8)
)具有恆定的運行時間O(1)
。
第二個for
循環具有複雜性O(n)
並且將執行n+n^2
通過。
這使代碼O(n^2)
複雜
這個問題似乎是題外話,因爲它是關於算法的分析,而不是實際的編程問題。 –
這對於[計算機科學](http://cs.stackexchange.com/help/on-topic)更合適。 –
也許試着巧妙地改寫你的問題以符合標準 – sshashank124