for i 1 in ifor j 1 jn js 請問s 的程式步數

2022-01-23 15:00:10 字數 4149 閱讀 5606

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 遮瑕力很好,但是因為他是乳狀的,所以不可以像平常用粉底液那樣用,使用上要一點一點推開來,才不會覺得過於厚重。質地上...