PHP二維陣列的快速排序
阿新 • • 發佈:2018-12-14
/** * 二維陣列的快速排序(推薦) * @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; }