PHP二维数组的快速排序

版权声明: https://blog.csdn.net/gwz1196281550/article/details/80811204
/**
 * 二维数组的快速排序(推荐)
 * @param Array $data 二维数组
 * @param string $field 所要排序的字段
 * @param string $order 正序或倒序
 * @param boolean $isabs 是否比较绝对值
 */
function quickSort($data,$field,$order="asc",$isabs=false) {
   $len=count($data);
   if($len <= 1){
      return $data;
   }
   $item = $data[0][$field];
   $left = array();
   $right = array();
   $abs=$isabs==false?"":"abs";
   switch($order){
      case 'desc'://倒叙
         for($i = 1;$i < $len; $i++){
            if(self::isabs($data[$i][$field],$isabs) > self::isabs($item,$isabs)){
               $left[] =$data[$i];
            }else{
               $right[]=$data[$i];
            }
         }
         break;
      case 'asc':
         for($i = 1;$i < $len; $i++){
            if(self::isabs($data[$i][$field],$isabs) < self::isabs($item,$isabs)){
               $left[] =$data[$i];
            }else{
               $right[]=$data[$i];
            }
         }
         break;
      default:
         break;
   }
   $left = self::quickSort($left,$field,$order);
   $right = self::quickSort($right,$field,$order);
   $result = array_merge($left,array($data[0]),$right);
   return $result;
}

猜你喜欢

转载自blog.csdn.net/gwz1196281550/article/details/80811204