[英]big O that is less than N?
完全自學(和 StackOverflow),我是 Big-O 符號的新手,需要在一些即將到來的采訪中更好地理解它。
我的問題是當復雜度小於N
時,如何在 Big-O 中進行注釋? 例子是一個質數計算器,它檢查每個整數的余數,直到N/2
,因為如果我們發現沒有小於一半的除數,那么上半部分肯定沒有除數。
那么,就符號而言,是O(N/2)
還是N
變為N = N/2
?
def primecheck(num):
i = 2
while i <= ( num // 2 ):
if not (num % i):
return False
i += 1
return True
Big-O 表示法旨在忽略常數因素。 只要k
是一個常數(意思是一些與N
無關的東西,例如 1/2、1/3、1、2、3 等),那么O(kN)
含義與O(N)
完全相同。
Big-O
表示法旨在表達僅變量的復雜性,在這種情況下忽略所有常量,因此n/2
表示與4n
相同。 然而質數檢查是一個只需要檢查到sqrt(n)
的問題,所以問題只是O(sqrt(n))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.