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

2022-10-02 12:36:25 字數 4823 閱讀 1951

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*3; 誰能告訴我這個的時間複雜度是多少,怎麼來的呢?謝謝

3樓:碎夜遊痕

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)

4樓:小云老師

付費內容限時免費檢視

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

迴圈控制變數 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;的時間的複雜度是(?)

5樓:北問邇

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

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

所以假設迴圈次數是x。

那麼i = 2^x

條件是i <= n

2^x <= n

所以x <= logn

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

6樓:

假設迴圈次數是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*2 這個演算法的時間複雜度怎麼算

7樓:娛樂小八卦啊

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

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

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

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

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

擴充套件資料

演算法的時間效能分析

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

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

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

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

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

8樓:匿名使用者

你可以分析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) { s=s+i; i=i*3 }

9樓:友誼蛋蛋

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

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

10樓:仁昌居士

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)。

11樓:匿名使用者

假設迴圈次數是x。

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

2^x <= n

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

12樓:匿名使用者

迴圈退出的條件為i > n

設第k次迴圈後退出迴圈

於是2^k > n

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

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

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

13樓:要火快留名

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

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

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

mainint s,i for s 0,i 1,i3 is iprintfd n ,s請問輸出結果是什麼,還有原因哦

輸出是copy5。因為s初值是0,而s i在i 之後,所以循bai環過程是 dui 1和i 2,但加到s上的是2和3,所以zhi最後得s是5。不過for的 中有錯誤dao,i 1後應該是分號而不是逗號,否則編譯都過不了的 你好,你的程式有點亂,我稍微修改了下,程式最後輸出結果為 3 include ...

根號3i的5次方怎麼算1根號3i2的5次方怎麼算

3 i 5 3 i 3 i 2 2 3i 3 i 8 8 3i 3 i 16 3 16i 3 i 2 2分之 3 2分之1 i 2 cos 150 i sin 150 3 i 5 2 cos 150 i sin 150 5 2 5 cos 5 150 i sin 5 150 32 cos750 i ...

若有定義int a 3,b 2,c 1,則執行程式段if

a的值為1 條件a b c的值為假,所以執行a c,結果a 1 a b c相當於 a b c 先計算a b,為真,值為1,計算1 c,為假,整個表示式的值就是假 若有定義 int a 3,b 2,c 1 則執行程式段if a b c a b else a c 之後,a 問題不全啊?a的值?a b c...