<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 不同的算法時間復雜度 > 原文: [https://javatutorial.net/algorithm-time-complexities](https://javatutorial.net/algorithm-time-complexities) 在開始解釋不同的時間復雜度之前,讓我們首先看一下實際的算法是什么。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 算法的正式定義是“在計算或其他解決問題的操作(尤其是計算機)中要遵循的過程或規則集”。 因此,換句話說,算法是定義的路徑,例如計算機使用該算法來完成給定問題的解決方案。 ![Algorithm Workflow](https://img.kancloud.cn/c0/d9/c0d90261c9f2df9886de065ed86e3583_445x706.jpg) 算法工作流程 盡管聽起來很簡單且不復雜,但事實恰恰相反。 許多算法要花費大量時間才能完成某件事,而有些則沒有。 這就是為什么了解給定算法的**復雜度**非常重要的原因。 那是因為通過了解算法的復雜度,可以使我們了解算法的“價值”,或者說效率如何。 算法示例: * 圖片搜尋 * 語音輸入 * 意見建議 * 谷歌地圖 * 谷歌新聞 * 等等 ![An ironic example of algorithm](https://img.kancloud.cn/71/76/7176c6dcc971a2d9dff384a12ff3fedc_831x468.jpg) 具有諷刺意味的算法示例 ## 不同類型的算法復雜度 * ### 恒定時間:`O(1)` 如果時間量不取決于輸入大小,則可以說算法大小以恒定時間運行。 一個例子是從數組訪問元素。 您只需“調用”數組的索引即可訪問數組的元素。 * ### 線性時間:`O(n)` 線性時間是指算法取決于的輸入大小。 如果輸入大小為 n ,則復雜度也將為 n。 具有這種時間復雜度的算法的一個著名示例是線性搜索。 * ### 對數時間:`O(log n)` 如果執行時間與輸入大小的對數成正比,則可以說該算法以對數時間運行。 這種時間復雜度的算法的一個著名示例是二分搜索。 * ### 二次時間:`O(n^2)` 二次時間是指執行時間為輸入大小的平方。 例如冒泡排序,選擇排序,插入排序。 * ### “大 Ω”的定義 大歐米茄,也稱為下界,用`Ω`符號表示。 ## 大 O 如果執行時間與輸入大小的對數成正比,則可以說該算法以對數時間運行。 例如,如果 Java 中有一個數組,其中包含 5 個蘋果,并且您需要打印每個蘋果,則該數組將為`O(5)`或換句話說,為`O(數組長度)`或`O(n)`。 這種時間復雜度的算法的一個著名示例是二分搜索。 ## 大 Θ 如果`T(n)`是`Θ(f(n))`,則意味著`T(n)`增長(精確)與`f(n)`一樣快。`n + n`仍然是 n。 是不是有點滿嘴? 讓我們嘗試一個更簡單的解釋。 您可以將大 Θ 視為: “花費的時間不會超過且不短于” ## 如何確定給定程序的復雜度 ```java int sumArray(int[] aiNumbers) { int iSum = 0; for (int i=0; i<aiNumbers.length; i++) iSum += aiNumbers[i]; return iSum; } ``` 該程序的復雜度只是`aiNumbers.length`。 因此,如果此數組的長度為 4,則復雜度為 4。如果`aiNumbers.length`為 6,則復雜度為 6。 復雜度是`aiNumbers.length`的原因是因為它會循環`aiNumbers.length`次。 因此,復雜度為`O(N)`。 ```java N = in.length; i = 0; while (i < N) { for (int i=N-2; i<N; i++) { System.out.println("Do something."); } } ``` 上面程序的復雜度為`N * N`,即 N 乘以 2 的冪。這是因為`for`循環每次將運行 N 次,而整個循環將運行 N 次。 因此,`N *N`。因此,該算法的復雜度是二次(`O(n^2)`) ```java for (int i = 0; i < n; i++) { // do something } for (int i = 0; i < n; i++) { // do something } ``` 在上面的示例中,算法的時間復雜度為 n 。 這樣做的原因是因為有 2 個循環 n 次循環 – `n + n`。 簡而言之,`n + n`就是 n 。 ## 每種算法的可視化表示 ![Visual Represantion](https://img.kancloud.cn/20/1a/201aa09378417f53f9a8dc209486c16a_967x784.jpg) 視覺表示 圖片來源: [https://adrianmejia.com/most-popular-algorithms-time-complexity-every-programmer-should-know-free-online-tutorial-course/](https://adrianmejia.com/most-popular-algorithms-time-complexity-every-programmer-should-know-free-online-tutorial-course/) 在算法和復雜度方面,請盡可能嘗試優化算法。 這樣做的一個好方法是使用集合等在輸入數據中找到共同點。請記住:內存很昂貴,您的時間也很昂貴。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看