首页 > 代码库 > 几个常见的排序算法

几个常见的排序算法

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 }

 

几个常见的排序算法