php实现快速排序
这几上代码
一、代码
代码一:
1
代码二:在thinkphp的控制器中
1 quickSortDemo();12 }13 14 //快速排序(递归)15 public function quickSort($arr){16 //0、递归返回条件17 if(count($arr)<=1) return $arr;18 //1、找到分割点19 $mid = $arr[0];20 $l = array();21 $r = array();22 //2、对数据进行分割,也就是对除分割点外的每个数据进行遍历23 for($i=1;$iquickSort($l);28 $r=$this->quickSort($r);29 //3、对分割的数据进行组合30 return array_merge($l,array($mid),$r);31 }32 33 public function quickSortDemo(){34 $arr=array(19,65,2,5,1,456,32,64564,2,7,9,2);35 dump($this->quickSort($arr));36 }37 }
1、第20行,这里是用新数组来存分割出来的数据,而不是在原数据的基础上交换,一种典型的那空间换低算法复杂度
2、第27行,实在容易忘记接收返回值
3、第27行,因为在thinkphp中,这个this->好像都不能省的样子,后者还有什么别的原因
4、第30行,array的那些函数,前缀都是array_,而不是arr_,array_merge()的参数必须是数组
5、第30行,array()参数是变量的时候可以将变量化为数组,其实就和array的定义那样
6、第24行,数组添加值,稍微注意一下就好
7、快排的核心点,找好分割点,可以拿第一个点做分割点
截图