注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录~~~

Stay Hungry. Stay Foolish.

 
 
 

日志

 
 

php:快速排序的两种方法  

2013-05-04 16:31:32|  分类: 算法/DS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//$data=array(23,16,2,36,34,3,9,67,54);

//$ref=$data[0];
//$count=count($data)-1;
//qksort($data,0,$count);

//$arr=other_qksort($data);
//echo "<pre>";
//var_dump($arr);
//echo "</pre>";
function quickSort($arr){
       $len = count($arr);
       if($len <= 1) {
           return $arr;
       }
       $key = $arr[0];
       $left_arr    = array();
       $right_arr    = array();
       
       for($i=1; $i<$len; $i++){
           if($arr[$i] <= $key){
               $left_arr[] = $arr[$i];
           } else {
               $right_arr[] = $arr[$i];
           }
       }
       $left_arr    = quickSort($left_arr);
       $right_arr    = quickSort($right_arr);
       return array_merge($left_arr, array($key), $right_arr);
   }
第二种:
//快速排序
function qksort(&$data,$i,$j){
if($i<$j){
$rkey=partition($data,$i,$j);
qksort($data,$i,$rkey-1);
qksort($data,$rkey+1,$j);
}
//return $data;
}
function partition(&$data,$i,$j){
$r=$data[$i];
//$count=count($data);
while($i<$j){
while($i<$j && $data[$j]>$r)
$j--;
$rf=$data[$i];
$data[$i]=$data[$j];
$data[$j]=$rf;
while($i<$j && $data[$i]<$r)
$i++;
$rf=$data[$i];
$data[$i]=$data[$j];
$data[$j]=$rf;
}
$data[$i]=$r;
return $i;
}
  评论这张
 
阅读(84)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018