php快速排序算法(递归排序与迭代排序)的例子

发布时间:2020-04-25编辑:脚本学堂
php快速排序算法的二个例子,php递归排序与迭代排序的实现代码,递归法实现的快速排序,迭代法的快速排序,使用快速排序产生一个随机数组。

php快速排序算法
递归排序和迭代排序。

1、递归法:
 

复制代码 代码示例:
/**
* 递归法实现的快速排序
*/
function quicksort($seq)
{
$k = $seq[0];
$x = array();
$y = array();
for($i=1; $i< $_size; $i++) {
if($seq[$i] <= $k) {
$x[] = $seq[$i];
} else {
$y[] = $seq[$i];
}
}
$x = quicksort($x);
$y = quicksort($y);
return array_merge($x, array($k), $y);
} else {
return $seq;
}
}

2、迭代法:
 

复制代码 代码示例:
/**
* 迭代法的快速排序
*/
function quicksortx(&$seq)
{
$stack = array($seq);
$sort = array();
while ($stack) {
$arr = array_pop($stack);
if(count($arr) <= 1) {
if(count($arr) == 1) {
$sort[] = &$arr[0];
}
continue;
}
$k = $arr[0];
$x = array();
$y = array();
$_size = count($arr);
for($i =1 ;$i < $_size; $i++) {
if($arr[$i] <= $k) {
$x[] = &$arr[$i];
} else {
$y[] = &$arr[$i];
}
}
!empty($y) && array_push($stack, $y);
array_push($stack, array($arr[0]));
!empty($x) && array_push($stack, $x);
}
return $sort;
}

使用:
 

复制代码 代码示例:
/**
*产生一个随机数
*/
for($i=0;$i<5;$i++){
$testArr[]=mt_rand(0,100);
}
var_dump($testArr);
var_dump(quicksort($testArr));
var_dump(quicksortx($testArr));