本篇文章給大家帶來的內容是關於php實現快速排序的演算法思想與代碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。
核心思想:按大小一分為二,分別遞迴排序,瞻前顧後(分割 函數)。
php代碼如下:
<?phpfunction quickSort($arr){ $resultArr=qSort($arr,0,count($arr)-1); return $resultArr;}function qSort($arr,$low,$high){ if($low<$high){ //算出樞軸值 $partRes=partition($arr,$low,$high); $arr=$partRes["resultArr"]; $arr=qSort($arr,$low,$partRes["pivot"]-1);//對低子表遞迴排序 $arr=qSort($arr,$partRes["pivot"]+1,$high);//對高子表遞迴排序 } return $arr;}function partition($arr,$low,$high){ $pivotkey=$arr[$low]; //用子表的第一個記錄作樞紐記錄 while ($low<$high){ //從表的兩端交替向中間掃描 while ($low<$high&&$arr[$high]>=$pivotkey){ $high--; } $arr=swap($arr,$low,$high);//將比樞軸記錄小的記錄交換到低端 while ($low<$high&&$arr[$low]<=$pivotkey){ $low++; } $arr=swap($arr,$low,$high);//將比樞軸記錄大的記錄交換到高端 } return array("pivot"=>$low,"resultArr"=>$arr);//返回樞軸所在位置}function swap($arr,$index1,$index2){ $pivotkey=$arr[$index1]; $arr[$index1]=$arr[$index2]; $arr[$index2]=$pivotkey; return $arr;}$arr=array(9,1,3,2,6,7,4,8);$resultArr=quickSort($arr);echo implode(',',$resultArr);