【演算法】PHP實現冒泡排序和快速排序--防遺忘

來源:互聯網
上載者:User

標籤:and   ret   cti   for   依次   自己   第一個   快速   div   

  有沒有這樣的感覺,排序演算法雖然簡單,但是沒看過一次,一會就又忘了,所以有必要 自己使用實際的代碼運行實現,才記憶牢固,為此Mark

//需求:將數組中元素,從大到小排列
$a = array(11, 22, 44, 66, 99, 88);

  1. 冒泡排序
  /*將第1個數與第2個數,比較如果小於第2個數,就交換位置,依次與這些數比較。
   *緊接著是 第2個數做同樣的事,直到最後一個數為止
   */

//需求:將數組中元素,從大到小排列
$a = array(11, 22, 44, 66, 99, 88);
$sortArray = bubbleSort($a);
print_r($sortArray);


function bubbleSort($array) {/*{{{*/ $oldArray = $array; $newArray = array(); $count = count($oldArray); for($i = 0; $i < $count; $i++) {/*{{{*/ //初始化 $newArray[$i] = $oldArray[$i]; for($j = $i+1; $j < $count; $j++) { if($oldArray[$j] > $newArray[$i]) { $newArray[$i] = $oldArray[$j]; //交換位置 $tmp = $oldArray[$i]; $oldArray[$i] = $oldArray[$j]; $oldArray[$j] = $tmp; } } }/*}}}*/ return $newArray; }/*}}}*/

 

  2. 快速排序
  /*以第一個數為基準,比這個數大的數放到左邊的數組,比這個數大的數放到右邊的數組,然後做遞迴操作。
   *最後將左邊數組,這個數和右邊數組做 數組的 array_merge操作就行了
   */

 //需求:將數組中元素,從大到小排列
$a = array(11, 22, 44, 66, 99, 88);
$sortArray = bubbleSort($a);
print_r($sortArray);

function fastSort($oldArray) {/*{{{*/ $newArray = array(); $count = count($oldArray); if($count <= 1) return $oldArray; $stand = $oldArray[0]; //初始化 $left_array = array(); $right_array = array(); for($i = 1; $i < $count; $i++) {/*{{{*/ if($oldArray[$i] > $stand) { $left_array[] = $oldArray[$i]; } else { $right_array[] = $oldArray[$i]; } }/*}}}*/ //遞迴調用 $left_array = fastSort($left_array); $right_array = fastSort($right_array); //也可迴圈放入新數組中 $newArray = array_merge($left_array, array($stand), $right_array); return $newArray; }/*}}}*/


 

【演算法】PHP實現冒泡排序和快速排序--防遺忘

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.