[英]Big-O of my function
我試圖理解Big-O表示法,所以我使用while循環為O(n)編寫了自己的示例,因為我發現while循環有點難以理解Big O表示法。 我定義了一個名為linear_example的函數,它接受一個列表,示例是python:
所以我的代碼是:
def linear_example (l):
n =10
while n>1:
n -= 1
for i in l:
print(i)
我的思想過程是for循環中的代碼在恆定時間O(1)中運行,而while循環中的代碼在O(n)time中運行。 因此,存在O(1)+ O(n),其結果為O(n)。
反饋?
考慮一個簡單的for循環:
for i in l:
print(i)
這是O(n),因為您要遍歷列表以查找l中存在的許多項。 (其中n == len(l))
現在,我們添加一個while循環,該循環執行相同的操作十次,因此:
n + n + ... + n(x10)
復雜度為O(10n)。
由於這仍然是一階多項式,因此我們可以將其簡化為O(n),是的。
不完全的。 首先, n
不是固定值,因此O(n)是沒有意義的。 讓我們為此假設一個給定的值M
,更改前兩行:
def linear_example (l, M):
n = M
只要l
每個元素i
具有有限的打印時間, for
循環中的代碼就可以在O(1)時間中運行。 但是,循環迭代len(l)
次,因此循環復雜度為O(len(l)) 。
現在,循環運行一次完全穿過的每個值n
在while
循環,共M
次。 因此,復雜度是循環復雜度的乘積 : O(M * len(l)) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.