對于下面給出的 python 函式,我必須找到運算元和大 O。
def no_odd_number(list_nums):
i = 0
while i < len(list_nums):
num = list_nums[i]
if num % 2 != 0:
return False
i = 1
return True
根據我的計算,操作的數量是,4 3n但我不確定,因為我不知道如何處理if...else陳述句。
我還可以選擇正確的 Big O,根據我的計算,我認為應該是d. O(n),但我不確定。請幫忙!
a. O(n^2)
b. O(1)
c. O(log n)
d. O(n)
e. None of these
uj5u.com熱心網友回復:
大 O 表示法通常考慮最壞的情況。您擁有的功能非常簡單,但提前回傳似乎使事情變得復雜。但是,由于我們關心最壞的情況,您可以忽略該if塊。最壞的情況是你不早點回來。這將是一個類似 的串列[2,4,6,8],它將運行回圈四次。
現在,考慮到上述內容,看看 while 回圈中的內容。大小無關緊要list_nums:在回圈內部,您只需遞增i并在串列中查找某些內容。這兩者都是恒定時間操作,無論有多大都是相同的list_nums。
您執行此回圈的次數是list_nums. 這意味著隨著list_nums增長,操作的數量以相同的速度增長。這使O(n)您懷疑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/412139.html
標籤:
上一篇:正則運算式重新查找
下一篇:Def函式中的圓括號內的圓括號
