您现在的位置是:首页  > 后端  > PHP PHP

PHP冒泡排序

2020-05-08【PHP】3578人已围观

简介PHP冒泡排序

冒泡排序

  1. <?php
  2. // 冒泡排序
  3. $a = [32,45,56,3,23,54,323];
  4. function maopao($a){
  5. for($i=0;$i<count($a);$i++){
  6. for($y=$i+1;$y<count($a);$y++){
  7. if($a[$i] > $a[$y]){
  8. $tmp = $a[$i];
  9. $a[$i] = $a[$y];
  10. $a[$y] = $tmp;
  11. }
  12. }
  13. }
  14. return $a;
  15. }
  16. echo "<pre>";
  17. var_dump(maopao($a));
  18. // 递归 - 冒泡排序
  19. // 思路 - 拿出第一个数跟其他数比较,大于小于次数分两边,自己在中间
  20. // (1) 递归就是在过程或函数里调用自身。 ...
  21. // (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 ...
  22. // (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。 ...
  23. // (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。 ...
  24. $arr2 = $a;
  25. function oo2($arr2){
  26. $num = count($arr2);
  27. if($num <= 1){return $arr2;} //递归出口
  28. $one = $arr2[0];
  29. $arr_left = array();
  30. $arr_right = array();
  31. for ($i=1; $i < $num; $i++) {
  32. if($one > $arr2[$i]){
  33. $arr_right[] = $arr2[$i];
  34. }else{
  35. $arr_left[] = $arr2[$i];
  36. }
  37. }
  38. return array_merge(oo2($arr_right),array($one),oo2($arr_left));
  39. }
  40. print_r(oo2($arr2));

结果

  1. Array
  2. (
  3. [0] => 3
  4. [1] => 23
  5. [2] => 32
  6. [3] => 45
  7. [4] => 54
  8. [5] => 56
  9. [6] => 323
  10. )
  11. Array
  12. (
  13. [0] => 3
  14. [1] => 23
  15. [2] => 32
  16. [3] => 45
  17. [4] => 54
  18. [5] => 56
  19. [6] => 323
  20. )


关注博客,更多精彩分享,敬请期待!
 

Tags: 面试题  

很赞哦! (0)

我的名片

网名:随心

职业:PHP程序员

现居:湖北省-武汉市

Email:704061912@qq.com