1.二分查找
假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。(数据量大的时候使用)
<?php //二分查找 function bin_search($arr,$low,$high,$k) { if($low <= $high) { $mid = intval(($low + $high)/2); if($arr[$mid] == $k) { return $mid; } else if($k < $arr[$mid]) { return bin_search($arr,$low,$mid-1,$k); } else { return bin_search($arr,$mid+1,$high,$k); } } return -1; } $arr = array(1,2,3,4,5,6,7,8,9,10); print(bin_search($arr,0,9,3)); ?>
2.约瑟夫环(线性代数)
function king($n, $m) { $p = 0;//上一轮出列序号 for ($i = 2; $i <= $n; $i++) { $p = ($p+$m)%$i; } return $p+1; }
3.获取文件扩展名
(1)相等 相等 不相等
(2)true true true true true false true false
(3)aaaaaa
(4)5 0 1
(5)5 2
(6)1 2
使用五种以上方式获取一个文件的扩展名
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), ‘.’))); }
以上就是php算法面试题的基础介绍,本篇为大家挑选了几个常见的代表类型,也是面试时被问到最多的题目,大家一定要多结合基础的算法知识进行理解。更多php学习指路:php教程
推荐操作系统:windows7系统、PHP5.6、DELL G3电脑