博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】快速排序算法:递归分治的思想,是最常用的一种排序算法,速度快,效率高。
假设有一个数列:6,9,2,7,3,8,5,4,第一轮排序则:
以 6 位基数,将比 6 大的数放在 6 的右边,把 6 小的数放在 6 的左边,排序后在合并在一起,最后得到第一轮顺序的结果:
[2,3,5,4] 6 [9,7,8]
之后对 [2,3,5,4] 和 [9,7,8] 分别采用这样的方法进行排序,如对 [2,3,5,4] 进行排序,此时将 2 作为基数,将比 2 大的数放置在 2 的右边,比 2 小的数放置在 2 的左边,排序后是:
2 [3,5,4] 6 [7,8] 9
此时还需要排序的是 [3,5,4] 和 [7,8]
以同样的方法进行排序即可。这样的话,我们就可以写出一个递归函数来进行排序了。
完整代码如下:
function quickSort(&$arr)
{
if(count($arr) > 1)
{
$k = $arr[0]; // 基数
$left = array(); // 左边数组
$right = array(); // 右边数组
for($i = 1;$i < count($arr);$i ++)
{
if($arr[$i] > $k)
{
$right[] = $arr[$i];
}else
{
$left[] = $arr[$i];
}
}
$left = quickSort($left);
$right = quickSort($right);
return array_merge($left,array($k),$right); // 合并,这里是 array($k) 而不是 $k。
}else
{
return $arr;
}
}
$arr = array(8,3,6,9,1,2);
var_dump(quickSort($arr));
版权归 马富天个人博客 所有
本文链接地址:http://www.mafutian.com/340.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||