function quickSort($array = []) { if(!isset($array[1])) return $array; $mid = $array[0]; //获取一个用于分割的关键字,一般是首个元素 $leftArray = array(); $rightArray = array(); $center = array();//如果$mid 是一个重复的键值 则把他保存在center foreach($array as $v) { if($v > $mid) $rightArray[] = $v; //把比$mid大的数放到一个数组里 if($v < $mid) $leftArray[] = $v;//把比$mid小的数放到另一个数组里 if($v == $mid) $center[] = $mid;//不去重,只是排序 } $leftArray = quickSort($leftArray); //把比较小的数组再一次进行分割 //$leftArray[] = $mid; //把分割的元素加到小的数组后面,(去重) $rightArray = quickSort($rightArray); //把比较大的数组再一次进行分割 return array_merge($leftArray,$center,$rightArray); //组合两个结果 } $arr = array(49,38,65,97,76,76,13,27,49); print_r(quickSort($arr));
php 快排
最新推荐文章于 2021-10-27 17:09:37 发布