1. 程式人生 > >幾個常見的排序算法

幾個常見的排序算法

排序算法 算法 pan .cn span spa nbsp 小時 重復

1.快速排序

技術分享

快速排序使用的是分而治之的方法,步驟:

  1. 把數列的第一個數作為基準
  2. 走訪數組的每一個數,將小於基準的數放到基準的左邊,大於或等於的就放在右邊
  3. 將上一步得到的兩個數組進行相同的處理
  4. 不斷地重復第三步
  5. 最終的遞歸結束條件是數列長度小於或等於1

具體代碼實現:

 1 function sort($num)
 2 {
 3     /**
 4      * 遞歸出口,當數組不斷分小時,有可能會出現左右數組裏某一個的元素個數為0,所以是‘<=‘,而非‘==‘
 5      */
 6     if (count($num) <= 1) return $num;
 7 
 8
/** 9 * 初始化左數組,基準元素,右數組 10 */ 11 $leftArr = array(); 12 $base = $num[0]; 13 $rightArr = array(); 14 15 /** 16 * 在處理元素前先把數組第一個元素(基準)去掉,不需要對它處理 17 */ 18 array_shift($num); 19 foreach ($num as $value) { 20 if ($value < $base) { 21 $leftArr
[] = $value; 22 } else { 23 $rightArr[] = $value; 24 } 25 } 26 27 $leftArr = sort($leftArr); 28 $rightArr = sort($rightArr); 29 30 return array_merge($leftArr,array($base),$rightArr);//拼裝 31 }

幾個常見的排序算法