$list = array(3,2,1,4,7,6,5);
function fast($arr){
$num = count ($arr);
if($num<=1)
{
return $arr;
}
$key = $arr[0];
$left = $right = array();
for($i=1;$i<$num;$i++)
{
if($arr[$i]<$key)
{
$left[] = $arr[$i];
}
else
{
$right[] = $arr[$i];
}
}
$left = fast($left);
$right = fast($right);
return array_merge($left,array($key),$right);
}
$rs = fast($list);
思路:数组分成左 右数组 然后依次与数组第一个元素比较
按上面的例子第一次比较结果为
LEFT:2 1
RIGHT:4 7 6 5
比较KEY为3
然后让LEFT递归再次排序
LEFT为1
KEY为2
RIGHT为空
合并返回数组 1 2
right同理
最后将大数组的LEFT KEY RIGHT合并返回一个排序后的数组 这就是快速排序