php算法面試題
1. 使用PHP描述冒泡排序和快速排序算法,對象可以是一個數組
2. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數組
3. 寫一個二維數組排序算法函數,能夠具有通用性,可以調用php內置函數
【附答案】(以下答案不一定是最好的,只是一個簡單的參考)
一、基礎題
1. 相等 相等 不相等
2. true true true true true false true false
3. aaaaaa
4. 5 0 1
5. 5 2
6. 1 2
7. 使用五種以上方式獲取一個文件的擴展名
function get_ext1($file_name){
return strrchr($file_name, ‘.’);
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, ‘.’));
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}
二、算法題
1. 使用PHP描述冒泡排序和快速排序算法,對象可以是一個數組
//冒泡排序(數組排序)
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;
}
//快速排序(數組排序)
function quick_sort($array) {
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $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);
}
2. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數組
//二分查找(數組裏查找某個元素)
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;
}
//順序查找(數組裏查找某個元素)
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;
}
}
3. 寫一個二維數組排序算法函數,能夠具有通用性,可以調用php內置函數
//二維數組排序, $arr是數據,$keys是排序的健值,$order是排序規則,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;
}
-
面試心得體會(集錦15篇)15篇
當我們備受啓迪時,將其記錄在心得體會裏,讓自己銘記於心,這樣有利於我們不斷提升自我。但是心得體會有什麼要求呢?以下是小編爲大家整理的面試心得體會,僅供參考,歡迎大家閱讀。面試心得體會1在大家的共同努力下,我們組終於在笑聲中完成了對模擬面試的錄製。對於此次...
-
面試的注意事項(精選15篇)
面試的注意事項1當我們在一個崗位上時間過長,已經到達瓶頸階段不太能學到東西,自身也得不到提升之後,我們可能會開始考慮是否要跳槽換一個新環境以尋求一個更好的發展平臺。那麼,跳槽面試有沒有什麼特別需要注意的地方呢?下面就讓小編帶你去看看跳槽面試應該注意事...
-
面試自我優缺點介紹通用7篇
當進入一個陌生環境,我們有必要進行適當的自我介紹,用自我介紹往往可以向他人介紹自己。怎麼寫自我介紹才能避免踩雷呢?以下是小編收集整理的面試自我優缺點介紹,僅供參考,希望能夠幫助到大家。面試自我優缺點介紹1一般來講,面試自我介紹中我們都會說說自己的優點和...
-
銀行面試介紹
銀行面試介紹1各位考官:通過考試,今天,我以本崗位筆試第x的成績進入了面試。對我來說,這次工作機會顯得尤爲珍貴。我叫,今年27歲。x年7月我從xx學院系畢業。由於原因,使我與"太陽底下最光輝的職業"失之交臂。幸好,當時(原因),經人介紹,我在x單位有了工作經歷。回想起...