您当前的位置:首页 > 分类 > 技术资讯 > face > 正文

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() 函数用于对数组单元(键值)按照键名从高到低进行排序。