PHP經(jīng)典算法題

PHP學(xué)習(xí)之路---算法題

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){
    $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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陶衅,隨后出現(xiàn)的幾起案子屡立,更是在濱河造成了極大的恐慌,老刑警劉巖搀军,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膨俐,死亡現(xiàn)場離奇詭異,居然都是意外死亡奕巍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門儒士,熙熙樓的掌柜王于貴愁眉苦臉地迎上來的止,“玉大人,你說我怎么就攤上這事着撩∽绺#” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵拖叙,是天一觀的道長氓润。 經(jīng)常有香客問我,道長薯鳍,這世上最難降的妖魔是什么咖气? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮挖滤,結(jié)果婚禮上崩溪,老公的妹妹穿的比我還像新娘。我一直安慰自己斩松,他們只是感情好伶唯,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惧盹,像睡著了一般乳幸。 火紅的嫁衣襯著肌膚如雪瞪讼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天粹断,我揣著相機(jī)與錄音符欠,去河邊找鬼。 笑死姿染,一個胖子當(dāng)著我的面吹牛背亥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悬赏,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼狡汉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闽颇?” 一聲冷哼從身側(cè)響起盾戴,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兵多,沒想到半個月后尖啡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡剩膘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年衅斩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怠褐。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡畏梆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奈懒,到底是詐尸還是另有隱情奠涌,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布磷杏,位于F島的核電站溜畅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏极祸。R本人自食惡果不足惜慈格,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遥金。 院中可真熱鬧峦椰,春花似錦、人聲如沸汰规。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溜哮。三九已至滔金,卻和暖如春色解,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背餐茵。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工科阎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忿族。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓锣笨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親道批。 傳聞我的和親對象是個殘疾皇子错英,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 排序算法基礎(chǔ) 排序算法,是一種能將一串?dāng)?shù)據(jù)按照特定的排序方式進(jìn)行排列的一種算法隆豹,一個排序算法的好壞椭岩,主要從時間復(fù)雜...
    jackyshan閱讀 3,930評論 3 11
  • 1.使對象可以像數(shù)組一樣進(jìn)行foreach循環(huán),要求屬性必須是私有璃赡。(Iterator模式的PHP5實現(xiàn)判哥,寫一類實...
    史史小子閱讀 258評論 0 0
  • 關(guān)于我的倉庫 這篇文章是我為面試準(zhǔn)備的學(xué)習(xí)總結(jié)中的一篇 我將準(zhǔn)備面試中找到的所有學(xué)習(xí)資料,寫的Demo碉考,寫的博客都...
    太陽騎士索拉爾閱讀 1,120評論 0 7
  • 基礎(chǔ)篇 1.寫出如下程序的輸出結(jié)果 輸出結(jié)果是“aaaaaa”分析如下:首先PHP內(nèi)置有一種規(guī)則是:當(dāng)有兩個變量同...
    阿澤453閱讀 278評論 0 0
  • 那個地方還在腐爛塌计,我一度以為它停止了。甚至斷定已經(jīng)痊愈侯谁。 回答是否定的锌仅。 它只是被人蒙上了一層亮晶晶粉色的紗,然后...
    真的瀟呀閱讀 239評論 0 0