木、木

导航

快速排序法出现的小问题

    1. <?
      //快速排序法:排序的原始是使用分治策略来把待排序的序列分为两个子序,
      //在把分为两个子序当作原始数据再次分治依此下分直到最后,这里主要
      //  分为三个步骤;
      //    a:从数列里边挑出一个元素,该元素称为'基准';
      //    b:扫描一遍数列,将所有比'基准'小的元素排在基准前面,所有比'基准'大的元素排在基准后面;
      //    c:通过递归,将各子序列划分为更小的序列,直到把小鱼基准的元素的子数列和大于基准值元素的子数列排序;
        $arr = array(49,38,65,97,76,13,27);
        $arr = quite($arr);
        echo "<pre>";
        var_dump($arr);exit;
        echo "</pre>";
        
      
        function quite($arr){ 
          $len = count($arr);
      
          // $key = $arr[0];
          //有意思的是这里,当在这里写基准的时候,会报一个小警告
          //  和同事讨论半天最后认为是,当传过来值的时候,这里并不知道
          //  传进来的是什么,直接调用[0],在它认为是不和逻辑的,额
          if($len <= 1){
            return $arr;
          }
      
          $key = $arr[0];
        //而基准写在这里就没有错误
      $left = array(); $right = array(); for($i = 1; $i < $len; $i ++){ if($arr[$i] <= $key){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } $left = quite($left); $right = quite($right); return array_merge($left, array($key), $right); }

       

posted on 2013-09-17 11:19  高严  阅读(347)  评论(0编辑  收藏  举报