• 技术文章 >php教程 >php手册

    PHP两种快速排序算法实例,php排序算法

    2016-06-13 09:14:28原创380

    PHP两种快速排序算法实例,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));
    

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 快速排序 算法 sort
    上一篇:用php守护另一个php进程的例子,守护另一个php进程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php利用新浪接口查询ip获取地理位置• php mysql 数据库类• PHP代码:Http断点续传的实现例子• PHP Memcached应用实现代码• 一天学会PHP~!
    1/1

    PHP中文网