1樓:
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
s++i=1 時走
j=1,s:1
j=2,s:1*2
...j=n,s:1*n
i=2時走
j=1,s:1*n+1
j=2,s:1*n+2
...j=n,s:1*n+1*n
......
i=n,j=n時達到最大值 s:1*n+1*n+...+(n個)1*n = n*n
for(i=1;i<=n;i++) for(j=i;j<=n;j++) s++; 分析語句段執行的時間複雜度、
2樓:匿名使用者
i從1迴圈到n,j從i迴圈到n,s++這條語句總共被執行了(1+n)*n/2次,屬於n^2數量級,所以時間複雜度是o(n^2)
3樓:匿名使用者
內迴圈 for(j=i;j<=n;j++) s++; 的總執行次數是n-i+1
i的取值範圍是外迴圈就是1到n
所以總的執行次數是 n-i+1 i=1,...n 求和代入即 n+(n-1)+...+1 也就是(n+1)n/2
4樓:匿名使用者
。稍有誇張地說,如果一個語句i = 0,cpu需要的1,那麼你需要的系統延遲10秒,在迴圈執行i = 0的10倍,你可以。你自然10秒,然後後面的**執行。
cpu執行每個**只是很短的時間耗費。
找到這個程式,你可以觀察到的延遲,總的週期數為ms * 110正如上面說的1 ms的週期耗時的,如果你想達到你的延遲段長度的目的只能是決定傳入的ms。毫秒更大的延遲就越長。
3。有關的**,這中for(j = 110; j - j> 0);執行正常,但部分沒有任何意義。要麼改變
為(j = 110; j - ;);前面的**一致更改為(j = 110; j> 0,j - );
5樓:匿名使用者
n+n*n+n*n=n*n
x=0 for(i=1;i
6樓:天雲一號
當 i=1時,
x++執行n-2次;
當 i=2時,x++執行n-3次;
當 i=3時,x++執行n-4次;
。。。當 i=n-2時,x++執行1次;
當 i=n-1時,x++執行0次;
所以x++的執行次數為1+2+...+(n-2) = (n-1)*(n-2)/2
故時間複雜度為o(n^2)
7樓:黑色的夢
和冒泡類似,n的平方的時間複雜度
x=0;for(i=1;i
8樓:sunny鞦韆墜
i=1時 迴圈n-1
i=2。。。n-2
i=n-1 .... 1
所以1+2+3+。。。n-1=(1+n-1)*(n-1)/2=n^2/2-n/2
所以時間複雜度是0(n^2)
9樓:易燃又好吃
應該是o(n2),(n2表示n的平方……)
10樓:匿名使用者
從兩個方面對你的問題進行解答:
1.實驗。令x=0,y=1,每執行一次x=x+y,x都會加1,所以最後x的值就是其執行值。測試程式如下:
執行結果:
2、從理論說明。外層給定一個n,內部兩層就會迴圈1+2+3+....+n次,所以總的迴圈次數為:
1+(1+2)+(1+2+3)+(1+2+3+4)+.....(1+2+3+4+.....+n).
這個結果等於多少呢?請看下面數學證明。
證明過程:
數列各項是:
11+2
1+2+3
……1+2+3+……+n
由於:1+2+3+……+n=n(n+1)/2=(n²+n)/21²+2²+……n²=n(n+1)(2n+1)/6所以數列各項加起來就是:
s(n)=(1²+1)/2+(2²+2)/2+(3²+3)/2+……+(n²+n)/2
=[(1²+2²+3²+……+n²)+(1+2+3+……+n)]/2=[n(n+1)(2n+1)/6+n(n+1)/2]/2=n(n+1)[(2n+1)/6+1/2]/2=n(n+1)(n+2)/6
綜上,結果為n(n+1)(n+2)/6,時間複雜度為o(n的立方)
x=0; for(i=1; i
11樓:聽不清啊
電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。
使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
計算方法
1.一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
分析:隨著模組n的增大,演算法執行的時間的增長率和 f(n) 的增長率成正比,所以 f(n) 越小,演算法的時間複雜度越低,演算法的效率越高。
2. 在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出 t(n) 的同數量級(它的同數量級有以下:1,log2n,n,n log2n ,n的平方,n的三次方,2的n次方,n!
),找出後,f(n) = 該數量級,若 t(n)/f(n) 求極限可得到一常數c,則時間複雜度t(n) = o(f(n))
所以,t(n)=o(n(n-1)/2)=o(n^2)
for(i=1;i<=n;i++) for(j=1;j<=i;j++) s++;求時間複雜度
12樓:匿名使用者
總執行次數為1 + 2 + ... + n = n(n+1)/2 ,所以時間複雜度為o(n^2)
13樓:匿名使用者
時間複雜度應該是o(n^3)
求下面程式的時間複雜度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=i;k++) x=i+j-k;
14樓:
1+4+9+16+25+……+n^2
=n+(0+3+8+15+24+...+(n+1)(n-1))
上面這個式子說明複雜度是o(n^3)的,不過如果要求θ的話,我覺得很可能是n^2·logn?後面那個式子可以化簡不過我現在腦子不太夠用……
15樓:
時間複雜度為n*n*n
for(i=1;i<=n;i++) for(j=1;j<=n/2;j++) 算迴圈巢狀嗎?這是如何讓執行的?
16樓:匿名使用者
是迴圈巢狀,只是省略了{}
等同於 for(i=1;i<=10;i++)}
17樓:匿名使用者
算執行順序:
i=1;
如果(i<=n)==true 那麼
執行 j=1;
如果(j<=n/2)==true 那麼
執行 j++;
如果(j<=n/2)==true 那麼
執行 j++;
。。。如果(j<=n/2)==false 那麼內迴圈完成
執行i++;
如果(i<=n)==true 那麼
執行 j=1;
如果(j<=n/2)==true 那麼
執行 j++;
如果(j<=n/2)==true 那麼
執行 j++;
。。。如果(j<=n/2)==false 那麼內迴圈完成
執行i++;
如果(i<=n)==false 那麼
執行完成
簡單的c 程式設計fori 1 i100 i和i 1 for i100 i有什麼區別
你這語法應該是這樣 for int i 1 i 100 i 這個從1迴圈到99。i 1 for i 100 i 這個也是從1迴圈到99,沒有區別,也不會死迴圈。區別是變了i的使用範圍不一樣,一個在for內起作用,一個在for內,for外都可以用。i 1 for i 100 i 寫成 i 1 for ...
fori1i100i中的i是什麼意思
i 在這裡就是i i 1的意思。用在別的地方,則是先取i的原值,進行語句規定的操作,取用結束後i i 1 i 的意思說每次迴圈進來i 1,迴圈100次列印就是i 100.for int i i 100 i a i i 1 這個是什麼意思?解釋的仔細點 迴圈體 迴圈控制變數i初值為?int i 貌似你...
請1款比較適合夏季的遮瑕粉底,請推薦1款比較適合夏季的遮瑕粉底
你如果雀斑很嚴重的話,最好還是用遮瑕膏。因為粉底液畢竟遮瑕能力有限,很好的遮瑕粉底妝感就會比較厚,這個是肯定的。推薦幾個遮瑕不錯的粉底液吧 paul joe糖瓷粉底乳。spf15 pa 遮瑕力很好,但是因為他是乳狀的,所以不可以像平常用粉底液那樣用,使用上要一點一點推開來,才不會覺得過於厚重。質地上...