給出下面幾個C語言程式段的時間複雜度。要求寫出計算過程,謝

2021-03-30 15:29:27 字數 790 閱讀 4019

1樓:匿名使用者

1、主要操作是i = i * 5和i<=n,設迴圈次數為x,則5^x <= n,因此x <= log5(n),其中5是底數,因此時間複雜度為o(log5(n))。

2、主要操作在while迴圈中,設迴圈執行次數為x,則x^2<= n,x <= sqrt(n),因此時間複雜度為o(sqrt(n))。

3、主要是看內迴圈執行的次數,當i=1時,內迴圈執行n-3次i=2時,內迴圈執行n-6次,所以總的執行次數是(n-3*1)+(n-3*2)+(n-3*3)+...+(n-3*n/3)。總的項數為n/3,因此總次數為n*(n/3)-3*(1+2+...

+n/3)=(n^2 - 3n)/6。因此時間複雜度為o(n^2)

2樓:匿名使用者

求時間複雜度只需找出執行次數最多的那條語句。

對於第一個,設執行次數為k,則i最終等於k^5=n; 解出k即可;

對於第二個,設執行次數為k,則最終有k^2=n;解出k;

對於第三個,if語句執行n/3次,單獨看裡面的for執行(n-n/3)次,結合if語句,則最終有

(n-n/3)*n/3 ,時間複雜度一眼便知

請分析下面演算法的時間複雜度。希望可以給一個詳細分析計算過程,謝謝。

3樓:匿名使用者

演算法1是最壞情況執行n/2次,也就是o(n);

演算法2是執行次數是[lgn]+1,也就是o(lgn)演算法3是最壞情況執行[√n]-1次,這就是o(√n)其中,lg是以10為底的對數。[ ]是向下取整。

關於union的c語言題目寫出下面程式正確的輸出結

int和long一樣都是4個位元組,所以s k取的就是i 0 的值。printf c n s c 0 算出是9和大小端有關,只有小端才是9。就是ansi char 9 換成十六進位制就是39。char 0 取了i 0 的低八位。首先 union 和 struct 不同的一點就是一個 union 中的...

問幾個C語言程式的問題

1.include int main printf 轉換後的字母為 for i 0 i 5 i printf c s i printf n return 0 2.include int main return 0 3.include int main 這個很簡單嘛,我來回答好了 1.char str...

求解下面一段C語言程式每一句表達的意思,人家給的程式,但是不

include 標頭檔案 int f int n 定義一個函式 main 程式的開始,必須的 這麼簡單,自己看譚浩強那本c語言人們 入門,很快就能看懂每一句話了。看懂不管什麼 都有一些非常有意思的技巧 我假設我現在從來沒看過氣泡排序,和你一起分析一下這 int a n 初始化了亂序陣列int i,j...