数据结构(7)快速排序
2014-12-20 17:06
344 查看
快速排序的基本思想描述:
对于一个长度为N的待排序数列quick_sort($array)其运用快速排序思想为:
1.如果$array中的元素个数为0,或者为1个时,则返回,否则继续
2.选取$array中的一个元素$base_value作为基准数(即枢轴).
3.将所有小于或等于$base_value的元素都放在基准数的左边,将所有大于$base_value的元素放在基准数的右边.
4.再分别从其$base_value左边的数组和右边的数组中选取出一个基准数,再分别进行第3步的步骤
5.当所有所分的$array中的元素个数为0或者为一个时,则证明已经将所有元素进行排序完成
快速排序的PHP实现:
对于一个长度为N的待排序数列quick_sort($array)其运用快速排序思想为:
1.如果$array中的元素个数为0,或者为1个时,则返回,否则继续
2.选取$array中的一个元素$base_value作为基准数(即枢轴).
3.将所有小于或等于$base_value的元素都放在基准数的左边,将所有大于$base_value的元素放在基准数的右边.
4.再分别从其$base_value左边的数组和右边的数组中选取出一个基准数,再分别进行第3步的步骤
5.当所有所分的$array中的元素个数为0或者为一个时,则证明已经将所有元素进行排序完成
快速排序的PHP实现:
<?php function quick_sort($array){ $length = count($array); //获取数组长度 //判断数组长度,若其长度小于或等于1,则证明该数组已经排序完成过者为无效数组 if($length <= 1) { return $array; } $base_value = $array[0]; //设第一个值为基准数 $array_left = array();//该数组用于存放小于或等于基准数的值 $array_right = array(); //该数组用于存放大于基准数的值 for ($i=1;$i<$length;$i++) { //从左至右寻找第一个小于基准数的值 if($array[$i] <= $base_value){ $array_left[] = $array[$i]; }else{ $array_right[] = $array[$i]; } } /**********************递归排序**************************/ //对小于或等于基准数的数组进行一样的排序步骤 $array_left = quick_sort($array_left); //对大于基准数的数组进行一样的排序步骤 $array_right = quick_sort($array_right); //将排完序后的基准数左边的数组和基准数右边的数组进行合并 return array_merge($array_left,array($base_value),$array_right); } $arr=array(34,75,44,21,38,9,64,19,88,15); $res=quick_sort($arr); foreach($res as $key => $value){ echo "key: ".$key."value :".$value."<br/>"; } ?>
相关文章推荐
- [数据结构]快速排序
- 数据结构之快速排序
- 数据结构之二分法查找、快速排序思想与实现
- 数据结构基础(4) --快速排序
- 【数据结构与算法】排序算法之六:快速排序
- [C++]数据结构:排序算法Part2----快速排序、归并排序、箱子排序、基数排序
- 数据结构基础(4) --快速排序
- 夕拾-数据结构-快速排序
- 数据结构与算法之排序:堆排序、归并排序及快速排序
- 数据结构上机实验-希尔排序,快速排序,堆排序
- 数据结构之二分法查找、快速排序思想与实现
- 【数据结构与算法】【排序】快速排序的代码实现
- 数据结构之进阶排序(希尔排序、快速排序、归并排序)
- 数据结构基础 —— 快速排序 java 实现
- 【数据结构】快速排序
- 【数据结构与算法】快速排序
- [数据结构]原创!amor详解 快速排序 使用以及心得
- [C++]数据结构:排序算法Part2----快速排序、归并排序、箱子排序、基数排序
- 数据结构基础7.5:快速排序
- 【数据结构与算法】排序算法之六:快速排序