如水博客提供网络营销顾问服务与电子商务系统实施!

php 快速排序法,是冒泡排序的一种改进。更快速高效。

<?php
//快速排序法,冒泡排序的一种改进。更快速高效。
function quickSort($arr){ 
  //单个数据直接返回
  if(count($arr)<=1){
    return $arr;
  }
  //取第一个做中间比较值
  $key=$arr[0];
  
  //定义左右两个数组
  $left_arr=array();
  $right_arr=array();

  for($i=1;$i<count($arr);$i++){
    if($arr[$i]<$key){
      $left_arr[]=$arr[$i];
      //小于比较值
    }else{
      $right_arr[]=$arr[$i];
    }
  }
  
  //递归左数组
  $left_arr=quickSort($left_arr);
  //递归右数组
  $right_arr=quickSort($right_arr);
  //组成排序后的数组并返回
  $arr=array_merge($left_arr,array($key),$right_arr);
  return $arr;
}

$arr=array(56,35,82,21,55,91,72,28,12,49,60); 
print_r(quicksort($arr)); 
?>

标签:PHP
分类:技术专栏| 发布:如水| 查看: | 发表时间:2013/7/19
原创文章如转载,请注明:转载自如水博客 http://www.rushui.net/
本文链接:http://www.rushui.net/article/400.htm

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

1 #如水
如水 关联数据中的用法:
<?php
//快速排序法(关联数组),冒泡排序的一种改进。更快速高效。
function quickSort($arr){
//单个数据直接返回
if(count($arr)<=1){
return $arr;
}
//取第一个做中间比较值
$k_v=key($arr);
$key=current($arr);

//echo $k_v;exit;
//定义左右两个数组
$left_arr=array();
$right_arr=array();

foreach($arr as $k=>$v){
if($k==$k_v){
continue;
}
if($arr[$k]<$key){
$left_arr[$k]=$arr[$k];
//小于比较值
}else{
$right_arr[$k]=$arr[$k];
}
}

//递归左数组
$left_arr=quickSort($left_arr);
//递归右数组
$right_arr=quickSort($right_arr);



//组成排序后的数组并返回
$arr=array_merge($left_arr,array($k_v=>$key),$right_arr);
return $arr;
}

//注意,如果键值为数字,会重新进行索引
$arr=array('u1'=>89,'u3'=>77,'u4'=>99,'u5'=>34,'u6'=>100);
print_r(quicksort($arr));
?>
2013/7/19 12:55:32 【REPLY】

沪ICP备09044163号  

神奇网络 如水