PHP尋找數組中最大值與最小值

來源:互聯網
上載者:User
<?php     function maxMin(Array $arr) {         $cmpTime = 0;         $count = count($arr);         $big = $small = $arr[0];         for($i = 1; $i < $count; $i++) {             $cmpTime++;             if($big > $arr[$i]) {                 $cmpTime++;                 if($small > $arr[$i]) {                     $small = $arr[$i];                 }              } else {                 $big = $arr[$i];             }         }                  echo "ArrLeng: " . $count . "<br>";         echo "CmpTime: " . $cmpTime . "<br>";         echo "Big: " . $big . "<br>";         echo "Small: " . $small . "<br>";     }          $arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10);     maxMin($arr); ?>

ArrLeng: 19
CmpTime: 29
Big: 210
Small: -10

這個方法是一個不穩定的尋找,找的時候比較是n次,而最壞的時候比較是2n次,下面來看一個穩定的1.5n次比較的方法

<?php     function maxMin(Array $arr) {         $cmpTime = 0;         $count = count($arr);         $biggest = $smallest = $arr[$count - 1];         #每次取出兩個元素,比較兩個元素的大小再與最大值和最小值比較         for($i = 0; $i < $count - 1; $i += 2) {             $cmpTime++;             if($arr[$i] > $arr[$i + 1]) {                $bigger = $arr[$i];                $smaller = $arr[$i + 1];             } else {                $bigger = $arr[$i + 1];                $smaller = $arr[$i];                }             $cmpTime++;                 if($bigger > $biggest) {                 $biggest = $bigger;             }             $cmpTime++;             if($smaller < $smallest) {                $smallest = $smaller;             }         }         echo "ArrLeng: " . $count . "<br>";         echo "CmpTime: " . $cmpTime . "<br>";         echo "Big: " . $biggest . "<br>";         echo "Small: " . $smallest . "<br>";     }          $arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10);     maxMin($arr); ?>

ArrLeng: 19
CmpTime: 27
Big: 210
Small: -10

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.