亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個算法的 big-o 表示法是什么?

這個算法的 big-o 表示法是什么?

PIPIONE 2023-03-17 17:15:07
由循環中 N 的乘法組成的算法的大 O 表示法是什么。void testing(int n) {    for(int i =0; i<n;i++) {        n=n*2;        System.out.println("hi"+n);    }}
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

我會盡量嚴謹地回答我的問題。

編輯:忘了說,我們假設比較、賦值和乘法等每個操作的復雜度都是O(1)

簡而言之,該算法在大多數情況下不會終止,因此沒有為其定義復雜度。復雜度是算法成本C的某種上限,說明O(n)復雜度意味著C <= kxn, k > 0。非終止算法的成本是無限的,并且inf > inf是未定義的。

然后,讓我們看看為什么你的算法是非終止的:

每次迭代,如果i < n ,我們繼續。然而,每次迭代n都乘以2。在檢查循環條件時,我們可以看到in的值之間的關系: n = n0x2^i,其中n0是n的初始值。因此,您的算法只會在n0 <= 0時終止,并且當這種情況發生時,它不會進入循環一次。


查看完整回答
反對 回復 2023-03-17
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

我嘗試在我的 IDE 中運行你的代碼,我發現它是一個無限循環。算法復雜性僅針對算法定義,根據(最常接受的)定義必須終止。當一個程序沒有終止時,它就不是一個算法。所以它沒有“算法時間復雜度”。



查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號