PHP两种快速排序算法实例
更新时间:2015年02月15日 11:00:37 投稿:junjie
这篇文章主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下
虽然在PHP这样的web应用开发中,我们不是太强调排序的重要性,因为PHP自身已经带了例如sort()等这样强大的排序函数,但是在一些重要的场合,例如某些高并发的场合,我想排序算法的影响已经不能忽略。所以在此介绍递归排序和迭代排序。
递归法:
/**
* 递归法实现的快速排序
*/
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;
}
}
迭代法:
/**
* 迭代法的快速排序
*/
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));
您可能感兴趣的文章:
- PHP 快速排序算法详解
- php排序算法(冒泡排序,快速排序)
- 排序算法之PHP版快速排序、冒泡排序
- php项目开发中用到的快速排序算法分析
- PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
- php 二维数组快速排序算法的实现代码
- PHP排序算法之基数排序(Radix Sort)实例详解
- PHP排序算法之堆排序(Heap Sort)实例详解
- PHP排序算法之希尔排序(Shell Sort)实例分析
- PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
- PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
- PHP排序算法之快速排序(Quick Sort)及其优化算法详解
相关文章
smarty内部日期函数html_select_date()用法实例分析
这篇文章主要介绍了smarty内部日期函数html_select_date()用法,以实例形式较为详细的分析了smarty模板中内部日期函数html_select_date()的各项参数、功能及使用技巧,需要的朋友可以参考下2015-07-07
Zend Framework框架db类select查询器join链表使用示例
这篇文章主要介绍了Zend Framework框架的Db类select查询器join链表使用示例,需要的朋友可以参考下2014-03-03
Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解
这篇文章主要介绍了Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法,结合实例形式详细分析了Laravel框架Eloquent ORM通过模型新增数据、时间戳设置、批量赋值模型、Create新增等相关使用方法,需要的朋友可以参考下2019-12-12
php使用array_chunk函数将一个数组分割成多个数组
这篇文章主要介绍了php使用array_chunk函数将一个数组分割成多个数组,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2018-12-12


最新评论