这些都是真实的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