这篇文章主要介绍了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];
- }
- }
- !emptyempty($y) && array_push($stack, $y);
- array_push($stack, array($arr[0]));
- !emptyempty($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));
新闻热点
疑难解答