(1)在数据集之中,选择一个元素作为"基准"(pivot)。
(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
function quick_sort($arr)
{
《判断是否是数组》
if(!is_array($arr))
{
return false;
}
《数组长度为1直接返回数组》
if(count($arr) <=1)
{
return $arr;
}
《定义两个数组 一个是小于标尺的 一个是大于标尺的》
$left_array = array();
$right_array = array();
《选择第一个元素》
$base = $arr[0];
for($i=1; $i<count($arr); $i++)
{
if($base > $arr[$i])
{
《放入左边》
$left_array[] = $arr[$i];
}else{
《放入右边》
$right_array[] = $arr[$i];
}
}
《分别对 左边 和 右边的数组进行相同的排序处理方式,递归调用这个函数,并记录结果》
$left = quick_sort($left_array);
$right = quick_sort($right_array);
《合并左边 标尺 右边》
return array_merge($left,array($base),$right);
}