/**
*快速排序
*一趟
*/
function partion(&$arr,$low,$high){
$stand = $arr[$low]; //缓存支点记录
while($low < $high){ //从表的两端交替向中间扫描
while($low<$high && $arr[$high]>=$stand) $high--;
if($low<$high){ $arr[$low]=$arr[$high]; $low++;} //将比支点小的记录交换到前面
while($low<$high && $arr[$low]<$stand) $low++;
if($low<$high){ $arr[$high]=$arr[$low]; $high--;} //将比支点大的记录交换到后面
}
$arr[$low] = $stand; //支点记录到位
return $low; //返回支点记录所在位置
}
/**
*快速排序主程序
*递归调用
*/
function quickSort(&$arr,$low,$high){
if($low < $high){
$i = partion($arr,$low,$high);
quickSort($arr,$low,$i-1);
quickSort($arr,$i+1,$high);
}
}
$arr = array(6,3,8,5,9,2,10);
quickSort($arr,0,count($arr)-1);
echo '<pre>';print_r($arr);
读了一本数据结构与算法,在排序章节介绍了快速排序法,是用C语言描述的,我尝试把它用PHP实现。