php 面試 10大演算法題

2021-09-22 18:05:43 字數 4685 閱讀 2116

functionm_order($arr)}}

return$arr;

}var_dump(m_order([1, 3, 2, 5, 7, 9]));die;

優化氣泡排序

function m_order($arr)

for ($h = 0; $h < $count - 1; $h++)

}if ($flag == 0)

}return $arr;

}var_dump(m_order([2, 3, 4, 5, 1, 7, 9]));die;

/***

遍歷目錄

*@param$dir

*@returnarray

*/functionb_list($dir)

}return$listarr;

}var_dump(b_list('e:/shen'));die;

classmyqueue

public functionpop()

public functionshift()

public functionunshift($params)

public functiongetqueue()

}$obj =newmyqueue();

$obj->push(1);

$obj->push(2);

$obj->push(3);

$obj->push(4);

$obj->pop();

$obj->shift();

$obj->unshift(7);

$obj->unshift(8);

$obj->unshift(9);

var_dump($obj->getqueue());die;

/***

數猴子找大王

*@param$n 

總數*@param$m 

踢數*@returnmixed

*/functionmonkey($n, $m)

}return$arr[0];

}echomonkey(10, 5);die;

/***

斐波那契數列

*@param$n

*@returnmixed

*/functionfbnq($n)

return$arr;

}var_dump(array_values(fbnq(10)));die;

/***

自定義二維陣列按照某個鍵值排序

*@param$arr

*@param$key

*@param$order

*@returnarray

*/functionmyorder($arr, $key, $order)

if(strcasecmp($order,'asc') == 0)

if(strcasecmp($order,'desc') == 0)

$newarr = ;

foreach($keyarras$k=>$v)

return$newarr;

}$arr = [

['name'=>'shen25',

'age'=>'25',],[

'name'=>'shen27',

'age'=>'27',],[

'name'=>'shen24',

'age'=>'24',],[

'name'=>'shen26',

'age'=>'26',],[

'name'=>'shen30',

'age'=>'30',

],];

var_dump(myorder($arr,'age','desc'));die;

/***

順序查詢

*@param$arr

*@param$params

*@returnint|string

*/functionfindparams($arr, $params)

}return-1;

}$arr = [1, 3, 2, 5, 123, 4, 54, 2];

var_dump(findparams($arr, 123));die;

/***

二分查詢

$arr

需排好序

*@param$arr

*@param$start

*@param$end

*@param$params

*@returnmixed

*/functionerfen($arr, $start, $end, $params)elseif($arr[$key] < $params)else

return false;

}$b ='/a/b/c/d/e.php';

$a ='/a/b/f/g/j/h.php';

functiondiff($a, $b)

}//echo $k;die;

//var_dump(array_fill(0, $bcount-$k, '..'));die;

$result = array_merge(array_fill(1, $bcount-$k-1,'..'), array_slice($aarr,$k));

returnimplode('/', $result);

}var_dump(diff($a, $b));die;

/**楊輝三角

*@param$n

*/functionyhsj($n)else

echo

"  ";

}echo

"";}}

var_dump(yhsj(5));die;

附加:建立鍊錶  以及翻轉鍊錶

class node

function createlist()

return $list;

}function reservelist($list)

$newlist = new node();

$newlist->next = $new;

return $newlist;

}print_r(createlist());

var_dump(reservelist(createlist()));

PHP面試經典演算法題整理

最近在準備php面試。看了幾個經典的演算法,記錄一下 約瑟夫環 線性代數 function king n m return p 1 約瑟夫環 佇列 function king n m else i return array shift arr 有一母牛,到4歲可生育,每年一頭,所生均是一樣的母牛,到...

面試10大演算法題彙總 字串和陣列3

5.求兩個有序陣列的中位數 有兩個有序陣列a和b,其大小分別為m和n,求兩個有序數的中間值 若m n為偶數,則求兩個中間數的平均值。例 a b output 5.0 a b output 3.0 要求時間複雜度為o log m n 由於對時間複雜度有要求,因此不能直接遍歷,可考慮分治法 假設陣列a的...

10大基本演算法

1.求值法基本是三個步驟 輸入 計算 輸出 2.遞推法根據1 n的規律 求解第n個 3.遞迴法將大問題縮小為小問題,按照某種形式,使大小問題都符合這種求解方法。最終由小問題的求解推出大問題的求解 4.列舉法在一定區域內列舉出符合問題的全部解 5.模擬法根據實際問題變換成計算問題 6.分治法將問題拆分...