php面试常用算法
这些都是真实的IT公司招聘PHP程序员的面试题,这些都是简单的基本算法。包括:冒泡算法、快速排序算法、二分查找算法、顺序算法。
冒泡排序,对象可以是一个数组
01 |
function bubble_sort($array){ |
02 |
$count = count($array); |
03 |
if ($count <= 0) { |
04 |
return false ; |
05 |
} |
06 |
for ($i=0; $i<$count; $i++){ |
07 |
for ($j=$count-1; $j>$i; $j--){ |
08 |
if ($array[$j] < $array[$j-1]){ |
09 |
$tmp = $array[$j]; |
10 |
$array[$j] = $array[$j-1]; |
11 |
$array[$j-1] = $tmp; |
12 |
} |
13 |
} |
14 |
} |
15 |
return $array; |
16 |
} |
快速排序,对象可以是一个数组
01 |
function quick_sort($array) { |
02 |
if (count($array) <= 1){ |
03 |
return $array; |
04 |
} |
05 |
$key = $array[0]; |
06 |
$left_arr = array(); |
07 |
$right_arr = array(); |
08 |
for ($i=1; $i<count($array); $i++){ |
09 |
if ($array[$i] <= $key){ |
10 |
$left_arr[] = $array[$i]; |
11 |
} else { |
12 |
$right_arr[] = $array[$i]; |
13 |
} |
14 |
} |
15 |
$left_arr = quick_sort($left_arr); |
16 |
$right_arr = quick_sort($right_arr); |
17 |
return array_merge($left_arr, array($key), $right_arr); |
18 |
} |
二分查找
01 |
//使用二分查找数组中某个元素 |
02 |
function bin_sch($array, $low, $high, $k){ |
03 |
if ($low <= $high){ |
04 |
$mid = intval(($low+$high)/2); |
05 |
if ($array[$mid] == $k){ |
06 |
return $mid; |
07 |
}elseif ($k < $array[$mid]){ |
08 |
return bin_sch($array, $low, $mid-1, $k); |
09 |
} else { |
10 |
return bin_sch($array, $mid+1, $high, $k); |
11 |
} |
12 |
} |
13 |
return -1; |
14 |
} |
顺序查找
01 |
//顺序查找数组中某个元素 |
02 |
function seq_sch($array, $n, $k){ |
03 |
$array[$n] = $k; |
04 |
for ($i=0; $i<$n; $i++){ |
05 |
if ($array[$i]==$k){ |
06 |
break ; |
07 |
} |
08 |
} |
09 |
if ($i<$n){ |
10 |
return $i; |
11 |
} else { |
12 |
return -1; |
13 |
} |
14 |
} |
写一个二维数组排序算法函数,可以调用php内置函数,能够具有通用性
01 |
function array_sort($arr, $keys, $order=0) { |
02 |
if (!is_array($arr)) { |
03 |
return false ; |
04 |
} |
05 |
$keysvalue = array(); |
06 |
foreach ($arr as $key => $val) { |
07 |
$keysvalue[$key] = $val[$keys]; |
08 |
} |
09 |
if ($order == 0){ |
10 |
asort($keysvalue); |
11 |
} else { |
12 |
arsort($keysvalue); |
13 |
} |
14 |
reset($keysvalue); |
15 |
foreach ($keysvalue as $key => $vals) { |
16 |
$keysort[$key] = $key; |
17 |
} |
18 |
$new_array = array(); |
19 |
foreach ($keysort as $key => $val) { |
20 |
$new_array[$key] = $arr[$val]; |
21 |
} |
22 |
return $new_array; |
23 |
} |
原文地址:http://www.springload.cn/springload/detail/326