<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 基本原理 在要排序的一組數中,對當前還未排好的序列,從前往后對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即每當兩相鄰的數比較后發現它們的大小順序相反時就將它們互換。 ### 動畫演示 ![](https://box.kancloud.cn/b7d216a5b292cf3a5412bbc7fbb56a9e_826x257.gif) ### 算法步驟 1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。 3. 針對所有的元素重復以上的步驟,除了最后一個。 4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。 ![](https://box.kancloud.cn/97544dac7b3cd871d44278edd5c2fc72_1131x527.jpg =600x) ### 代碼實現 ``` // 冒泡排序 function bubbleSort($arr) { $length = count($arr); if($length <= 1) { return $arr; } for( $i = 0; $i < $length-1; $i ++ ) { for( $j = 0; $j < $length-$i-1; $j ++ ) { if( $arr[$j] > $arr[$j + 1] ) { $temp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $temp; } } } return $arr; } // 調用測試 $arr = [3,1,13,5,7,11,2,4,14,9,150,6,12,10,8]; print_r(bubbleSort($arr)); ``` ### 平均時間復雜度:O(n2) 若數組的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數C和記錄移動次數M均達到最小值:Cmin = n - 1, Mmin = 0,所以,冒泡排序最好的時間復雜度為O(n)。 若初始數組是反序的,需要進行n-1趟排序。每趟排序要進行 n-i 次關鍵字的比較(1 ≤ i ≤ n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值: Cmax = n(n-1)/2 = O(n2) Mmax = 3n(n-1)/2 = O(n2) 冒泡排序的最壞時間復雜度為O(n2),綜上,因此冒泡排序總的平均時間復雜度為O(n2)。 ### 小結 冒泡排序就是把小的元素往前調或者把大的元素往后調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們交換一下的;如果兩個相等的元素沒有相鄰,那么即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前后順序并沒有改變,所以冒泡排序是一種穩定排序算法。
                  <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>

                              哎呀哎呀视频在线观看