for if語句和僅用if語句的程式效率

2022-10-28 18:45:34 字數 4280 閱讀 7277

1樓:回頭的世界

以下為在vc++6.0環境下對程式效率(時間,空間)分析的過程和結論:

1 程式**

#include "stdafx.h"

#include

int main()

;int max;

max=number[0];

for(int i=1;i<10;i++)

}if (max

if (max

if (max

if (max

if (max

if (max

if (max

if (max

if (max

return 0;

}2 問題提出:

上面程式**查詢10個數中的最大值,分別使用for +if語句,和9個單獨的if語句,請問上述兩種方法,

哪一種程式效率較高?為什麼?

3 分析

3.1 for+if語句的反彙編**

13: for(int i=1;i<10;i++)

00401074 mov dword ptr [ebp-30h],1

0040107b jmp main+76h (00401086)

0040107d mov ecx,dword ptr [ebp-30h]

00401080 add ecx,1

00401083 mov dword ptr [ebp-30h],ecx

00401086 cmp dword ptr [ebp-30h],0ah

0040108a jge main+94h (004010a4)

14:19: }

004010a2 jmp main+6dh (0040107d)

3.2 獨立的9個if語句的反彙編**(以第一個if語句為例)

22: if (max

004010a4 mov eax,dword ptr [ebp-2ch]

004010a7 cmp eax,dword ptr [ebp-24h]

004010aa jge main+0a2h (004010b2)

23:3.3 分析:

1)使用for + if ,每次迴圈需要執行13個彙編**,迴圈**最大可能執行:9 * 13 = 117條指令;

2)使用獨立if語句,每次執行5條判斷語句,9個if**判斷最大執行**量為9 * 5 = 45 條指令;

程式效率分析(執行時間和佔用記憶體空間的分析)因此從程式時間效率上分析,2)的時間效率會比較高。但從空間

上分析,1)的效率會比較高,迴圈執行一共使用15條指令;2)的效率不高(45條指令空間)。

實際的程式設計使用建議 :一般實際使用1)方法的話,**會比較容易維護,2)在實際應用中顯得不是很專業的做法!

2樓:匿名使用者

兩種演算法的程式效率應該相當的吧,時間複雜度都為o(10)糾正一個錯誤:定義變數

int number[10],int max;

要麼把逗號改成分號,要麼就把int去掉

希望回答對你有幫助。

3樓:洪濡霈

用9個if的效率高,但是用for語句比較簡潔,易修改。

原因很明顯,for迴圈裡同樣做了9次比較和賦值,但是還多出了9次對i的賦值和比較操作。

其實不必計較這個的,基本沒人會用9個if

4樓:匿名使用者

這個 最壞情況下都是常量時間 o(1)

所以是一樣的

假設有n步

for 迴圈和if 都是 o(n) 所以 比這個是沒意義的這個for 能迴圈n次 if你能複製n次嗎???

5樓:匿名使用者

for高,cpu會把for的迴圈塊放進cache再進行運算。如果你的if語句太長甚至都不能整個的放進去。

c語言中能不能只用if語句實現迴圈?如何用if語句實現迴圈?以下面這個程式為例

6樓:佛火天下

哈哈,你只執行了第一步,if可以迴圈,但是要用到goto語句,你和goto語句搭配用肯定木有問題的啦

你這是邏輯錯誤+語法理解不到位

不過我也看出來了,你應該學完了c,不過還很萌那種,重複,重複,重複.,記憶記憶記憶,熟能生巧啦

7樓:匿名使用者

基本概念學得不紮實啊。

程式設計的三種基本結構:順序,條件,迴圈。

如果非要用if來做,可以寫個遞迴的函式來求階乘:

#include

int f(int n)

int main()

8樓:chong詠

親,,if只是判斷,,建議你把if改成while

9樓:友雅唱

#include

int main()

printf("%d\n",s);

return 0;}

10樓:匿名使用者

if實現得用goto語句吧?

c語言中if和else if用的多會不會讓程式變慢?我用了幾十個了

11樓:go學龍

這要看你對程式的效率要求有多高。。。一般程式無所謂啦

但如果你要求高,,,幾十個if-else if估計有一定影響。。。

12樓:匿名使用者

不會的,你用幾百個也不會慢,迴圈做錯了才會變慢

c語言for迴圈巢狀if語句

13樓:匿名使用者

兩種方法,一種是重新賦值,程式段如下

for(i=0;i本層迴圈,由於賦值i=-1,執行完//break語句之後,執行外層迴圈i++指令,使得//i=0;外層迴圈相當於重新開始,j的值無需處理,//因每次進入內層迴圈,j值均會被for語句賦初值0}第二種方法是無條件轉移指令:

sign: for(i=0;i

一般情況下,應當避免使用goto無條件跳轉指令,因為很多人認為程式可讀性會因為goto的引入而變差,但是在不少情況下goto可以使得程式**簡單,效率提高,個人認為適當使用goto指令並無不可,樓主可自己作出選擇。

14樓:繆立軍

int flag = 0;

for (int i=0;i條件成立

if (flag)

break;

}是要實現這個麼

15樓:兔子和小強

for(i=0; i<10; ++i)}}

16樓:ylf塵風

for(i=0;條件;i++)

for(j=0;條件;j++)

if(成立)

17樓:毋迎南彭菲

c語言裡if語句裡是可以巢狀for迴圈的(if語句裡可以放c語言裡的任意的執行語句)。

舉例說:

char

yn;int

i;printf("需要列印1到10之間的所有奇數嗎(y/n)?\n");

scanf("%c",&yn);

if(yn=='y'||yn=='y')

else

printf("那就不列印了\n");

在c++中if語句和case語句哪一個執行效率更高

18樓:戎彗羊舌賓白

實際上case1啥也不幹,但是由於case1後面沒有break語句執行完case1會繼續執行case2,直到遇到break語句,同理如果顯示x,那就說明執行了case2因為case2後面沒有break語句所以程式會執行case3和case4,直到遇到break,**還不明白可以hi我

19樓:匿名使用者

case執行語句的效率高些,if語句的執行對系統的開銷大些

20樓:匿名使用者

case 夠直觀,但執行效率不及if高。

如果對執行速度有要求,建議使用if,

否則,還是使用case,因為它夠直觀。

多個if語句和多個if else語句的區別

if 條件1 if 條件2 if 條件3 if 條件n 當 條件1,條件2,直到 條件n,當所有的條件都為真,才執行 if 條件1 語句1 else if 條件2 語句2 if 條件3 語句3 if 條件n 語句n 當 條件1,條件2,直到 條件n,當所有的條件都為假,才執行 語句n.條件1 為真,...

于丹的經典語句,人生經典語句

有好多的 例如 1 一個人炫耀什麼,說明內心缺少什麼 2 一個人越在意的地方,就是最令他自卑的地方。3 人都有以第一印象定好壞的習慣,認為一個人好時,就會愛屋及烏,認為一個人不好時,就會全盤否認。4 人越是得意的事情,越愛隱藏,越是痛苦的事情越愛小題大作。5 這個世界既不是有錢人的世界,也不是有權人...

VB IF語句問題,vb中的if語句問題

if a 1 and a 2 and a 3.then 需要滿足所有條件則執行if if a 1 or a 2 or a 3.then 滿足其中個一就執行if if a 1 then按順序判斷條件,如滿足其中一條,則不執行下面的elseif elseif a 2 then elseif a 3 th...