php常见的一些算法
发布时间:2017-06-06 16:33:06 来源:51推一把
【摘要】php常见的一些算法
//冒泡算法
public function bubble_sort($array){
$count=count($array);
if($count<=0) return false;
for($i=0;$i<$count;$i++){
for($j=$i;$j<=$count-1;$j++){
if($array[$i]>$array[$j]){
$tmp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$tmp;
}
}
}
return $array;
}
//快速排序
public function quick_sort($array){
$count=count($array);
if($count<=1) return $array;
$key=$array[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<$count;$i++){
if($array[$i]<=$key){
$left_arr[]=$array[$i];
}else{
$right_arr[]=$array[$i];
}
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
//二分查找/折半查找[$array 为有序数组]
public function bin_search($array,$low,$high,$k){
if($low<=$high){
$mid=intval(($low+$high)/2);
if($array[$mid]==$k){
return $mid;
}elseif($k<$array[$mid]) {
return bin_search($array,$low,$mid-1,$k);
}else{
return bin_search($array,$mid+1,$high,$k);
}
}
return -1;
}
//顺序查找
public function seq_search($array,$k){
foreach($array as $key=>$val){
if($val==$k){
return $key;
}
}
return -1;
}
//二维数组排序算法函数
function array_sort($arr, $keys, $order="ASC") {
if (!is_array($arr)) {
return false;
}
$keysArr = array();
foreach($arr as $k => $v) {
$keysArr[$k] = $v[$keys];
}
if($order == "ASC"){
asort($keysArr); //按键值进行升序排序
}else {
arsort($keysArr); //按键值降序
}
reset($keysArr);
$new_array = array();
foreach($keysArr as $k => $v) {
$new_array[] = $arr[$k];
}
return $new_array;
}
sort() 函数用于对数组键值从低到高进行排序。
rsort() 函数用于对数组键值从高到低进行排序。
asort() 函数用于对数组键值从低到高进行排序并保持索引关系。
arsort() 函数用于对数组键值从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元(键值)按照键名从低到高进行排序。
krsort() 函数用于对数组单元(键值)按照键名从高到低进行排序。
public function bubble_sort($array){
$count=count($array);
if($count<=0) return false;
for($i=0;$i<$count;$i++){
for($j=$i;$j<=$count-1;$j++){
if($array[$i]>$array[$j]){
$tmp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$tmp;
}
}
}
return $array;
}
//快速排序
public function quick_sort($array){
$count=count($array);
if($count<=1) return $array;
$key=$array[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<$count;$i++){
if($array[$i]<=$key){
$left_arr[]=$array[$i];
}else{
$right_arr[]=$array[$i];
}
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
//二分查找/折半查找[$array 为有序数组]
public function bin_search($array,$low,$high,$k){
if($low<=$high){
$mid=intval(($low+$high)/2);
if($array[$mid]==$k){
return $mid;
}elseif($k<$array[$mid]) {
return bin_search($array,$low,$mid-1,$k);
}else{
return bin_search($array,$mid+1,$high,$k);
}
}
return -1;
}
//顺序查找
public function seq_search($array,$k){
foreach($array as $key=>$val){
if($val==$k){
return $key;
}
}
return -1;
}
//二维数组排序算法函数
function array_sort($arr, $keys, $order="ASC") {
if (!is_array($arr)) {
return false;
}
$keysArr = array();
foreach($arr as $k => $v) {
$keysArr[$k] = $v[$keys];
}
if($order == "ASC"){
asort($keysArr); //按键值进行升序排序
}else {
arsort($keysArr); //按键值降序
}
reset($keysArr);
$new_array = array();
foreach($keysArr as $k => $v) {
$new_array[] = $arr[$k];
}
return $new_array;
}
sort() 函数用于对数组键值从低到高进行排序。
rsort() 函数用于对数组键值从高到低进行排序。
asort() 函数用于对数组键值从低到高进行排序并保持索引关系。
arsort() 函数用于对数组键值从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元(键值)按照键名从低到高进行排序。
krsort() 函数用于对数组单元(键值)按照键名从高到低进行排序。