i 1 while in i i 3誰能告訴我這

2022-03-30 09:40:04 字數 5409 閱讀 7562

1樓:碎夜遊痕

i是這樣變化的:1, 3, 9, 27, ...

如果用i(x)表示第x次迴圈時i的值,則 i(x) = 3^x , x初始值為0。

迴圈在 i <= n 的時候停止,即 i(x) = 3 ^ x <= n;

=> x<= log3(n)

即迴圈結束時,最多進行了log3(n)次運算。

按照大o表示法定義,它的複雜度為 o(log3(n)), 即 o(lgn/lg3)

2樓:小雲老師

付費內容限時免費檢視

回答您好這邊是小度宛雲老師,現在為您提供諮詢服務,您的問題我已經看見了呢,正在整理資料,請您稍等,馬上給您答覆哦~(平台對話只有六次哦推薦親盡可能提供完線索,當然您也可以繼續加單追問,小雲竭力解決您的疑問)

迴圈控制變數 i 遞增/遞減的步長為乙個常數 ,則認為迴圈的時間複雜度

提問i=1; while(i

回答你這裡i為乙個常數傳輸進去,n沒有把控

提問然後呢

回答您是要這個步驟嘛

提問對的

回答稍等啊

這個是乘法是乙個量級的迭代

提問條件是<n,如果是<=n,那結果就是log3(n),那<n,結果是多少呢,能不能一次性說完

回答在while迴圈中,每迴圈一次i都會乘於3,當乘到x次時,i>n則退出迴圈,,所以while內的**會執行x次,即i^x>n,又因為i每次的乘數是2即底數為2,所以它的時間複雜度是 (log2n), 如果乘數是4則是o(log3n)int i = 1;

3資料是三打字有點麻煩,抱歉

n本身就是乙個變數,結果肯定是乙個無窮盡的數只能拿變數來逼近他的值

得到乙個關於n的時間複雜度的函式關係

結果是不會有確定的值的,除非你已經得到n的乙個定值,根據函式關係可以得出複雜度

提問不是i=n時退出迴圈嗎?它每次的乘數是3,那它的時間複雜度怎麼表示

回答log3n

這個就是他的時間複雜度函式

如果你擔心的是i和n的關係量的問題的話影響這個表示式,在這裡i

提問嗯嗯 好的 謝謝

回答第二個i等於n就滿足「等於n」退出

不客氣,有疑惑還可以問我

更多21條

i=1; while(i<=n) i=i*2 這個演算法的時間複雜度怎麼算

3樓:娛樂小八卦啊

這個演算法的時間複雜度為logn。

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。

並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f (n),因此,演算法的時間複雜度記做:t (n) =0 (f (n) )。隨著模組n的增大,演算法執行的時間的增長率和f (n)的增長率成正比,所以f (n)越小,演算法的時間複雜度越低,演算法的效率越高。

在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出t (n)的同數量級。

擴充套件資料

演算法的時間效能分析

演算法耗費的時間和語句頻度

乙個演算法所耗費的時間=演算法中每條語句的執行時間之和

每條語句的執行時間=語句的執行次數(即頻度(frequency count))×語句執行一次所需時間

演算法轉換為程式後,每條語句執行一次所需的時間取決於機器的指令性能、速度以及編譯所產生的**質量等難以確定的因素。

若要獨立於機器的軟、硬體系統來分析演算法的時間耗費,則設每條語句執行一次所需的時間均是單位時間,乙個演算法的時間耗費就是該演算法中所有語句的頻度之和。

4樓:匿名使用者

你可以分析i,和迴圈次數之間的關係

i = 1, 2, 4, 8, 16 ...

所以假設迴圈次數是x。

那麼i = 2^x

條件是i <= n

2^x <= n

所以x <= logn

所以x 從1 到logn,一共執行迴圈體logn次,所以複雜度是logn

i=1; while (i<=n) i=i*2 時間複雜度

5樓:要火快留名

沒錯,n=4的時候,log2n=2。

但是,你有沒有注意到,時間複雜度是o(log2n),不是log2n。你不能無視符號"o"。

這個符號的意思是:時間複雜度不會比log2n大很多。通俗的說:就是時間複雜度或者和log2n在同一數量級,或者比log2n小。

關於時間複雜度 i=1; while(i<n) { s=s+i; i=i*3 }

6樓:友誼蛋蛋

時間複雜度為 log(n)。因為i每次迴圈擴大三倍,所以i

程式段i=1;while(i<=n)i=i*2;的時間的複雜度是(?)

7樓:北問邇

你可以分析i,和迴圈次數之間的關係

i = 1, 2, 4, 8, 16 ...

所以假設迴圈次數是x。

那麼i = 2^x

條件是i <= n

2^x <= n

所以x <= logn

所以x 從1 到logn,一共執行迴圈體logn次,所以複雜度是logn

8樓:

假設迴圈次數是x。

i = 1, 2, 4, 8, 16 ,i = 2^x條件是i <= n

2^x <= n

所以x <= log2n 一共執行迴圈體log2n次,所以複雜度是o(log2n)

i=1; while(i<=n) i=i*3; 誰能告訴我這個的時間複雜度是多少?怎麼得來的?

9樓:碎夜遊痕

i是這樣變化的:1, 3, 9, 27, ...

如果用i(x)表示第x次迴圈時i的值,則 i(x) = 3^x , x初始值為0。

迴圈在 i <= n 的時候停止,即 i(x) = 3 ^ x <= n;

=> x<= log3(n)

即迴圈結束時,最多進行了log3(n)次運算。

按照大o表示法定義,它的複雜度為 o(log3(n)), 即 o(lgn/lg3)

10樓:小雲老師

付費內容限時免費檢視

回答您好這邊是小度宛雲老師,現在為您提供諮詢服務,您的問題我已經看見了呢,正在整理資料,請您稍等,馬上給您答覆哦~(平台對話只有六次哦推薦親盡可能提供完線索,當然您也可以繼續加單追問,小雲竭力解決您的疑問)

迴圈控制變數 i 遞增/遞減的步長為乙個常數 ,則認為迴圈的時間複雜度

提問i=1; while(i

回答你這裡i為乙個常數傳輸進去,n沒有把控

提問然後呢

回答您是要這個步驟嘛

提問對的

回答稍等啊

這個是乘法是乙個量級的迭代

提問條件是<n,如果是<=n,那結果就是log3(n),那<n,結果是多少呢,能不能一次性說完

回答在while迴圈中,每迴圈一次i都會乘於3,當乘到x次時,i>n則退出迴圈,,所以while內的**會執行x次,即i^x>n,又因為i每次的乘數是2即底數為2,所以它的時間複雜度是 (log2n), 如果乘數是4則是o(log3n)int i = 1;

3資料是三打字有點麻煩,抱歉

n本身就是乙個變數,結果肯定是乙個無窮盡的數只能拿變數來逼近他的值

得到乙個關於n的時間複雜度的函式關係

結果是不會有確定的值的,除非你已經得到n的乙個定值,根據函式關係可以得出複雜度

提問不是i=n時退出迴圈嗎?它每次的乘數是3,那它的時間複雜度怎麼表示

回答log3n

這個就是他的時間複雜度函式

如果你擔心的是i和n的關係量的問題的話影響這個表示式,在這裡i

提問嗯嗯 好的 謝謝

回答第二個i等於n就滿足「等於n」退出

不客氣,有疑惑還可以問我

更多21條

下面程式段的時間複雜度是 ? i=1; while(i<=n) i=i*2

11樓:仁昌居士

i=1; while(i<=n) i=i*2的時間複雜度copyo(log2n)。

整段**語句,中迴圈體只有乙個while(i<=n),執行的次數是:

i = 1,i = 1*2=2,判斷2是否小於等於n,是則繼續迴圈,否則跳出迴圈。

i =2,i = 2*2=4,判斷4是否小於等於n,是則繼續迴圈,否則跳出迴圈。

i =4  ,i = 4*2=8,判斷8是否小於等於n,是則繼續迴圈,否則跳出迴圈。

根據規律發現,迴圈次數由log2n決定,所以複雜度是o(log2n)。

12樓:匿名使用者

假設迴圈次數是x。

i = 1, 2, 4, 8, 16 ,i = 2^x條件是i <= n

2^x <= n

所以x <= log2n 一共執行迴圈體log2n次,所以複雜度是o(log2n)

13樓:匿名使用者

迴圈退出的條件為i > n

設第k次迴圈後退出迴圈

於是2^k > n

因此k > log2n 以2為底的對數,k的實際值為log2n上取整

因此時間複雜度為o(log2n)

關於時間複雜度的問題,i=s=0; while(s

14樓:

根號2n=根號2*根號n=1.414*根號n,1.414是常數項捨去,故。

15樓:

這個你要看時間複雜度是怎麼定義的,為了剔除機器和程式設計技巧對執行時間的影響,在計算時間複雜度時考慮的是執行的次數,正如你所說,上述問題的算出來是根號2n,根號2n又等於根號2乘以根號n,此時我們就認為它的複雜度是根號n,因為根號2可以看成是它的乙個線性係數,隨著輸入規模n的增加是可以忽略的

16樓:掌中萌鼠

漸進時間複雜度是個近似值,n越趨近無窮大越接近準確值。

捨去項的常數係數,你可以把這個看看作一條為了方便的書寫約定。哪怕有100條語句複雜度也是o(1)。

因為如果不這樣做的話,你用什麼來決定項的係數?c語言程式的行數?還是編譯之後組合語言的行數?

這樣準確嗎?如果是長的複雜c語言語句呢?而且不同平台編譯產生的位元組碼條數也可能不同,所以你沒法準確的確定這個係數,乾脆就把他捨去,只考量n的數量級就夠了。

I3J3誰能幫我解釋下這個excel公式

是連線的意思 是乙個空格,其它的字元也是要用引號括上的這個公式是說 i3單元格的內容後面接乙個空格,然後接上j3單元格的內容,然後再接乙個空格 意思是將 i3,空格,j3,空格 連起來。excel中的公式 int i3 j3 0.05 10 10 是什麼意思,要怎麼設定?int是什麼意思?int 0...

設S 1 2i 3i4n 1 i的4n次方(n屬於N),則S

s 1 2i 3i 4n 1 i的4n次方 兩邊同時乘以i s 1 2i 3i 4n 1 i的4n次方 i s i 2i 2 4n i 4n 4n 1 i的4n 1次方 相減 s 1 i 1 i 2 i 4n 4n 1 i 4n 1 s 1 i 1 i 4n 2 1 i 4n 1 i 4n 1 i ...

已知m R,複數z m m 2 m 1 (m2 2m 3)i

z m m 2 m 1 m 2m 3 i,1 由 m 2m 3 0 m 1 0 解得m 3 2 由 m m 2 m 1 0 m 2m 3 0 解得m 0或m 2 已知m r,複數z m?2m?1 m2 2m?3 i,當m為何值時 1 z r 2 z是純虛數 3 z對應的點位於復 1 z r m2 2...