1.二分查找
假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。(数据量大的时候使用)
<?php //二分查找 functionbin_search($arr,$low,$high,$k) { if($low<=$high) { $mid=intval(($low+$high)/2); if($arr[$mid]==$k) { return$mid; } elseif($k<$arr[$mid]) { returnbin_search($arr,$low,$mid-1,$k); } else { returnbin_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.约瑟夫环(线性代数)
functionking($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
使用五种以上方式获取一个文件的扩展名
functionget_ext1($file_name){ returnstrrchr($file_name,‘.’); } functionget_ext2($file_name){ returnsubstr($file_name,strrpos($file_name,‘.’)); } functionget_ext3($file_name){ returnarray_pop(explode(‘.’,$file_name)); } functionget_ext4($file_name){ $p=pathinfo($file_name); return$p['extension']; } functionget_ext5($file_name){ returnstrrev(substr(strrev($file_name),0,strpos(strrev($file_name),‘.’))); }
以上就是php算法面试题的基础介绍,本篇为大家挑选了几个常见的代表类型,也是面试时被问到最多的题目,大家一定要多结合基础的算法知识进行理解。更多php学习指路:php教程