PHP算法

PHP算法

  1. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數(shù)組

    二分查找(數(shù)組里查找某個元素)

    function bin_sch($array, $low, $high, $k){
        if ($low <= $high){
        $mid = intval(($low+$high)/2);
        if ($array[$mid] == $k){
            return $mid;
        }elseif ($k < $array[$mid]){
            return bin_sch($array, $low, $mid-1, $k);
        }else{
            return bin_sch($array, $mid+1, $high, $k); 
        } 
      }
      return -1;
    }
    
    

    順序查找(數(shù)組里查找某個元素)

    function seq_sch($array, $n, $k){
        $array[$n] = $k;
        for($i=0; $i<$n; $i++){    
            if($array[$i]==$k){
                break;
            }
        }
        if ($i<$n){
            return $i;
        }else{
            return -1;
        }
    }
    
    
  2. 使用PHP描述冒泡排序和快速排序算法,對象可以是一個數(shù)組

    冒泡排序(數(shù)組排序)

    function bubble_sort($array){
         if (count($array) <= 1) return $array;
         $count = count($array);
         if ($count <= 0) return false;
         for($i=0; $i<$count; $i++){
            for($j=$count-1; $j>$i; $j–){
                if ($array[$j] < $array[$j-1]){
                    $tmp = $array[$j];
                    $array[$j] = $array[$j-1];
                    $array[$j-1] = $tmp;
                }
            }
        }
      return $array;
    }
    
    

快速排序(數(shù)組排序)

function quick_sort($array) {
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i;$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);
}

3. 寫一個二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)

二維數(shù)組排序, arr是數(shù)據(jù),keys是排序的健值,$order是排序規(guī)則,1是升序,0是降序

function array_sort($arr, $keys, $order=0) {
    if (!is_array($arr)) {
        return false;
    }
    $keysvalue = array();

    foreach($arr as $key => $val) {
        $keysvalue[$key] = $val[$keys];
    }
    if($order == 0){
        asort($keysvalue);
    }else {
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach($keysvalue as $key => $vals) {
        $keysort[$key] = $key;
    }
    $new_array = array();
    foreach($keysort as $key => $val) {
        $new_array[$key] = $arr[$val];
    }
    return $new_array;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Mr和Mrs在一起已經(jīng)5個月,167天,4008小時,240480分鐘,14428800秒了。 而現(xiàn)在,他們...
    bao_閱讀 1,324評論 0 0
  • 媽媽的世界很小 只裝滿了我們 我們的世界很大 常忽略了她 她經(jīng)常忘了我們已經(jīng)長大 就像我們經(jīng)常忘了她已經(jīng)老了一樣 ...
    慕容蘭馨閱讀 295評論 0 17
  • 《為何是他》、《婚姻的意義》、《工作的意義》、《慷慨的正義》提摩太凱勒的四部曲。從信仰到婚姻、工作、正義,讓你有不...
    樂道_a525閱讀 5,193評論 0 1
  • 二月春分似剪刀。詩里面說的二月一定是按農(nóng)歷來算的,今天二月一號,是公歷,依舊很冷,因為農(nóng)歷還是臘月。 2016年的...
    魏雨self閱讀 272評論 0 0

友情鏈接更多精彩內(nèi)容