有多個for迴圈,有沒有演算法可以加快計算時間?

發布 科技 2024-08-22
10個回答
  1. 匿名使用者2024-02-01

    理論上每次都是計算的,但實際上編譯器會優化這個,直接用8代替這個“3+5”,所以一般情況下程式執行的時候不需要乙個計算,因為這個計算是在編譯階段進行的,vs2008環境下,反彙編**如下(倒數第二行的最後8個是“3+5”的替代品): for(int i = 0; i < 5+3;i++)013d17ce mov dword ptr [i],0 013d17d5 jmp wmain+30h (13d17e0h) 013d17d7 mov eax,dword ptr [i] 013d17da add eax,1 013d17dd mov dword ptr [i],eax 013d17e0 cmp dword ptr [i],8 013d17e4 jge wmain+45h (13d17f5h) 但是,如果與 i 相比,它不是乙個常量表示式,它就是函式的返回值, 如 for(int i = 0; i < getvalue();i++),getvalue() 函式每次迴圈時都會被呼叫一次。

  2. 匿名使用者2024-01-31

    這主要取決於您的程式。 如果多個for迴圈非常卡住,在多個for迴圈的情況下,分析是否可以減少for迴圈。

    根據程式,break 是結束整個迴圈,continue 是結束單個迴圈。

  3. 匿名使用者2024-01-30

    你不能說它是一種演算法,它不是乙個結構,也許乙個演算法中只有乙個簡單的for語句,但你不能說乙個for語句是一種演算法,因為乙個演算法是用來解決問題的,而for結構本身並不能解決問題,但人們通常談論和學習的是一種可以很好地解決問題的聰明演算法, 所以大多數時候,如果你只是用for迴圈來列出,人們不會認為你選擇了演算法。

    比如你想在很多數字中找乙個數字,我可以乙個乙個地找到它們,最後找出我需要的東西,這就是演算法,但因為效率比較低,需要很長時間,所以它是一種比較演算法,你也可以用一半或其他搜尋方式對數字進行排序, 這樣你就可以做同樣的事情,但我可能只花了前乙個的十分之一的時間,甚至千分之一,所以我說這是乙個更好的演算法。

    乙個演算法的好壞通常要從時間和空間兩個方面來考慮,影響演算法選擇的用途次數和問題的大小就是使用次數。

    時間是執行演算法所需的時間,空間主要是指使用演算法所需的記憶體,兩者都與問題的大小有關。

    問題的使用次數和大小如何影響演算法選擇。 舉個例子,如果你還在一堆數字中尋找乙個數字,如果你只需要在其中找一兩次數字,你就不應該使用我上面的方法,因為你可以在足夠的時間內對它們進行排序,讓你做你需要的事情,而使用上面的演算法並不能減少時間, 但增加了時間。

    例如,如果一堆只有幾個數字,那麼你就不需要使用上面的演算法,你會發現當數字不多時,計算時間並沒有減少,或者時間減少得很少。

    一般來說,我們考慮演算法,只有當我們覺得對常規演算法造成的時間和空間損失不滿意,或者常規演算法無法達到我們的要求時,我們才會考慮使用某種演算法進行優化或實現。

    演算法不僅僅是乙個函式或其他東西,它代表著一種思維方式,它不是你已經掌握的演算法的應用,即使你掌握了演算法,所以要學習演算法,你必須徹底理解演算法的思想,然後你可以根據實際情況選擇應用演算法。 也許這兩段是完全不同的,但它們使用相同的演算法,因為它們使用相同的思維方式來解決問題。

  4. 匿名使用者2024-01-29

    演算法是解決某個問題的方法,乙個想法。

    例如:求最大公約數的滾動減法、求素數的篩選法、排序的氣泡法、排序的選擇法......

    而 for 是乙個不能說是演算法的語句,它只是演算法描述過程中的一種表達形式,所以也可以用 while 語句來描述。

    可以這麼說,遞迴是馬馬虎虎的,但它是乙個更通用的數學思想,這意味著它被應用於特定的演算法。

  5. 匿名使用者2024-01-28

    for迴圈是乙個語句,即乙個演算法可以加到for迴圈中,也可以不加,演算法等價於乙個方法。

  6. 匿名使用者2024-01-27

    for 不是演算法,是語言的基本結構。

    程式語言通常以三種方式執行:順序執行、分支執行 (if) 和迴圈執行 (for、while)。

  7. 匿名使用者2024-01-26

    演算法是解決某個問題的方法,乙個想法。

    例如:求最大公約數的滾動減法、求素數的篩選法、排序的氣泡法、排序的選擇法......

    而 for 是乙個不能說是演算法的語句,它只是演算法描述過程中的一種表達形式,所以也可以用 while 語句來描述。

    遞迴是一種演算法,但它是乙個更通用的數學思想,這意味著它被應用於特定的演算法。

  8. 匿名使用者2024-01-25

    如果符號迴圈有效,則它是一種演算法。

    例如,編寫乙個讀取陣列內容的演算法。

    int a[10]=;

    int *p;

    for(p= a;p<&a[10];p++) 是演算法:

    演算法應具有以下五個重要特徵:

    演算法可以使用各種不同的方法進行描述,例如自然語言、偽**、流程圖等。

    1.差。

    演算法的無限性意味著演算法必須能夠在有限數量的步驟後終止.2 確定性.

    演算法的每個步驟都必須精確定義;

    3. 輸入。 乙個演算法有0個或更多的輸入來描述操作物件的初始情況,所謂0個輸入,就是演算法自己決定了初始條件;

    4.輸出。 演算法具有乙個或多個輸出來反映處理輸入資料的結果。 沒有輸出的演算法是沒有意義的;

    5.可行性。

    演算法中執行的任何計算步驟都可以分解為基本的可執行操作步驟,即每個計算步驟都可以在有限的時間內完成。

  9. 匿名使用者2024-01-24

    for 迴圈:for counter = start to end [step increment]。

    statements

    next [counter]

    迴圈中語句的執行次數為:int((end-start) counter)+1,即變數的結束值(end)——變數(start)的起始值,再除以步長(increment),得到的結果四捨五入,加上1,即為迴圈語句執行的總次數。

    例如:對於 i=2 到 30 步驟 2

    接下來 執行這個迴圈中的語句: 30 Slip 2 28,除以 2 得到 14,四捨五入到 14,加上 1,即 15

    另乙個例子:對於 i=2 到 100 步驟 5

    將執行此迴圈中的下乙個語句:100 2 98,除以 5,四捨五入為 19,然後加到 1,即 20 倍。

  10. 匿名使用者2024-01-23

    a+=i,即 a=a+i 第乙個 i=1 a=0+1 第二個 i=2 a=1(這個 1 是最後乙個 1=0+1 中的 1) +2

    所以是 1+2+3......10=45

相關回答
8個回答2024-08-22

是的,你不相信嗎?

不斷更新,獨家**,旋律優美。 >>>More

8個回答2024-08-22

你喜歡什麼型別? 中文、英文還是別的什麼?

7個回答2024-08-22

一切都是永恆的。

你必須理解的是存在的概念。 >>>More

26個回答2024-08-22

《黑道家族》超級搞笑,16集,但不知道多少年了。

10個回答2024-08-22

熱海調查員

黨與重罪犯罪調查班 >>>More