首页 > 开发 > PHP > 正文

PHP两种快速排序算法实例

2024-05-04 23:31:25
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下

虽然在PHP这样的web应用开发中,我们不是太强调排序的重要性,因为PHP自身已经带了例如sort()等这样强大的排序函数,但是在一些重要的场合,例如某些高并发的场合,我想排序算法的影响已经不能忽略。所以在此介绍递归排序和迭代排序。

递归法

 

 
  1. /** 
  2. * 递归法实现的快速排序 
  3. */ 
  4. function quicksort($seq
  5. $k = $seq[0]; 
  6. $x = array(); 
  7. $y = array(); 
  8. for($i=1; $i$_size$i++) { 
  9. if($seq[$i] <= $k) { 
  10. $x[] = $seq[$i]; 
  11. else { 
  12. $y[] = $seq[$i]; 
  13. $x = quicksort($x); 
  14. $y = quicksort($y); 
  15. return array_merge($xarray($k), $y); 
  16. else { 
  17. return $seq

迭代法:

 

 
  1. /** 
  2. * 迭代法的快速排序 
  3. */ 
  4. function quicksortx(&$seq
  5. $stack = array($seq); 
  6. $sort = array(); 
  7. while ($stack) { 
  8. $arr = array_pop($stack); 
  9. if(count($arr) <= 1) { 
  10. if(count($arr) == 1) { 
  11. $sort[] = &$arr[0]; 
  12. continue
  13. $k = $arr[0]; 
  14. $x = array(); 
  15. $y = array(); 
  16. $_size = count($arr); 
  17. for($i =1 ;$i < $_size$i++) { 
  18. if($arr[$i] <= $k) { 
  19. $x[] = &$arr[$i]; 
  20. else { 
  21. $y[] = &$arr[$i]; 
  22. !emptyempty($y) && array_push($stack$y); 
  23. array_push($stackarray($arr[0])); 
  24. !emptyempty($x) && array_push($stack$x); 
  25. return $sort

使用:

 

 
  1. /** 
  2. *产生一个随机数组 
  3. */ 
  4. for($i=0;$i<5;$i++){ 
  5. $testArr[]=mt_rand(0,100); 
  6. var_dump($testArr); 
  7. var_dump(quicksort($testArr)); 
  8.  
  9. var_dump(quicksortx($testArr)); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表