PHP实现快速排序

快速排序

思想:从数组中选一个数字作为基准数字,然后将数组进行遍历,比此数大的数字放一个数组里,比此数小的数字放另一个数组里。然后递归调用,最终合并数组。

特点:最坏的时间复杂度为O(n^2),不稳定,例如下面的2个相同数字5,谁排前后不确定。

<?php declare(strict_types=1);

function quickSort(array $aNum): array
{
   $iLen = count($aNum);
   if ($iLen > 1) {
       $iNum = $aNum[0];
       $aLow = [];
       $aHigh = [];
       for ($i = 1; $i < $iLen; $i++) {
           $aNum[$i] >= $iNum ? array_push($aHigh, $aNum[$i]) : array_push($aLow, $aNum[$i]);
       }
       $aLow = quickSort($aLow);
       $aHigh = quickSort($aHigh);

       return array_merge($aLow, [$iNum], $aHigh);
   }

   return $aNum;
}

print_r(quickSort([2, 5, 3, 78, 5, 8]));

原文地址:https://www.cnblogs.com/arvintang/p/14528750.html