PHP如何实现快速排序?
Posted php中文网最新课程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何实现快速排序?相关的知识,希望对你有一定的参考价值。
源 / php中文网 源 / www.php.cn
快速排序是一种比较排序,这意味着它可以对任何类型的元素进行排序。快速排序可以说是的改进。
(查看原文请点击本文末尾左下角:阅读原文)
快速排序实现思路的示意图如下:
注:水平线是枢轴值
快速排序算法代码如下:
<?php
function
quick_sort(
$my_array
)
{
$loe
=
$gt
=
array
();
if
(
count
(
$my_array
) < 2)
{
return
$my_array
;
}
$pivot_key
= key(
$my_array
);
$pivot
=
array_shift
(
$my_array
);
foreach
(
$my_array
as
$val
)
{
if
(
$val
<=
$pivot
)
{
$loe
[] =
$val
;
}
elseif
(
$val
>
$pivot
)
{
$gt
[] =
$val
;
}
}
return
array_merge
(quick_sort(
$loe
),
array
(
$pivot_key
=>
$pivot
),quick_sort(
$gt
));
}
$my_array
=
array
(3, 0, 2, 5, -1, 4, 1);
echo
'原始数组 : '
.implode(
','
,
$my_array
).
'\n'
;
$my_array
= quick_sort(
$my_array
);
echo
'排序后数组 : '
.implode(
','
,
$my_array
);
原始数组:3,0,2,5,-1,4,1
排序后数组:-1,0,1,2,3,4,5
相关函数介绍:
array_shift()函数将数组开头的单元移出数组;
array_shift
(
array
&
$array
) : mixed
array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。
array_merge()函数合并一个或多个数组;
array_merge
(
array
$array1
[,
array
$... ] ) :
array
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
本篇文章就是关于PHP快速排序算法的介绍,希望对需要的朋友有所帮助!
-END-
声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!
▼请点击下方:“阅读原文”,在线查看全部文章内容!
以上是关于PHP如何实现快速排序?的主要内容,如果未能解决你的问题,请参考以下文章