天天看點

PHP 快速排序法

1 <?php
 2 function quickSort($arr) {
 3     //先判斷是否需要繼續進行
 4     $length = count($arr);
 5     if ($length <= 1) {
 6         return $arr;
 7     }
 8     //如果沒有傳回,說明數組内的元素個數 多餘1個,需要排序
 9     //選擇一個标尺
10     //選擇第一個元素
11     $base_num = $arr[0];
12     //周遊 除了标尺外的所有元素,按照大小關系放入兩個數組内
13     //初始化兩個數組
14     $left_array = array();//小于标尺的
15     $right_array = array();//大于标尺的
16     for ($i = 1; $i < $length; $i++) {
17         if ($base_num > $arr[$i]) {
18             //放入左邊數組
19             $left_array[] = $arr[$i];
20         } else {
21             //放入右邊數組
22             $right_array[] = $arr[$i];
23         }
24     }
25     //再分别對 左邊 和 右邊的數組進行相同的排序處理方式
26     //遞歸調用這個函數,并記錄結果
27     $left_array = quickSort($left_array);
28     $right_array = quickSort($right_array);
29     
30     //合并左邊 标尺 右邊
31     return array_merge($left_array, array($base_num), $right_array);
32 }
33 $arr = array(88, 1, 2, 5, 4, 3, 66, 0);
34 $res = quickSort($arr);
35 print_r($res);