回炉重造,第十三话:php数组查找
来源:互联网 发布:白手套 知乎 编辑:程序博客网 时间:2024/05/22 02:32
半条咸鱼也有梦
今天来学习以下php的数组查找
1.顺序查找
<?php
$arr = array(100,25,30,-8,39,1,0);
function search(&$arr,$findVal){
$flag = false;
for($i=0;$i<count($arr);$i++){
if($findVal==$arr[$i]){
echo "已找到,下标为$i";
$flag = true;
break;
}
}
if(!$flag){
echo "查无此数";
}
}
search($arr,7);
?>
2.二分查找
前提条件是数组本身是有序数组,若是无序的则需要先排序再查找
原理,先找到数组中间的数,然后与要查找的数比较,如果查找的数大于中间的数,则说明要到后面找,小于则从前面找,相等则说明找到
//二分查找,必须掌握
$arr = array(-100,-1,0,1,2,3,4,5,6,7,8);
function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
//当$rightIndex>$leftIndex说明找不到该数
if($rightIndex<$leftIndex){
echo "Null";
return ;
}
$arr = array(-100,-1,0,1,2,3,4,5,6,7,8);
function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
//当$rightIndex>$leftIndex说明找不到该数
if($rightIndex<$leftIndex){
echo "Null";
return ;
}
//找到中间数
$middleIndex = round(($rightIndex+$leftIndex)/2);
if($findVal>$arr[$middleIndex]){
binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
}else if ($findVal<$arr[$middleIndex]) {
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
}else{
echo "下标为$middleIndex";
}
}
binarySearch($arr,3,0,count($arr)-1);
$middleIndex = round(($rightIndex+$leftIndex)/2);
if($findVal>$arr[$middleIndex]){
binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
}else if ($findVal<$arr[$middleIndex]) {
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
}else{
echo "下标为$middleIndex";
}
}
binarySearch($arr,3,0,count($arr)-1);
0 0
- 回炉重造,第十三话:php数组查找
- 回炉重造,第十二话:php数组遍历排序
- 回炉重造,第一话:PHP语法与数据类型
- 回炉重造,第三话:PHP顺序控制
- 回炉重造,第四话:PHP循环控制
- 回炉重造,第五话:PHP回顾与练习
- 回炉重造,第六话:php部分语句
- 回炉重造,第七话:初探php函数
- 回炉重造,第八话:php页面相互调用
- 回炉重造,第十话:php字符串相关函数
- 回炉重造,第十一话:php位运算
- 回炉重造
- 回炉重造,第二话:PHP算数运算符
- java回炉重造(一)
- 回炉重造的BaseAdapter3.0
- Java回炉重造(二)静态代理
- 蒟蒻的回炉重造划水记录
- Java回炉重造(四)IterableMap:易于遍历的Map
- VIM快速移动光标到行首行尾及特定行
- iframe跨域通信
- Android 浅谈弱引用WeakReference
- MySQL几个概念
- python字符串title(),upper(),lower(),capitalize(),swapcase()
- 回炉重造,第十三话:php数组查找
- Java 线程池框架核心代码分析
- 循环与选择以及流程跳转语句
- Js判断Android和IOS、微信和QQ
- MySQL基础实战操作总结
- CrossValidation十字交叉验证的Python实现
- KNN(一)--简单KNN原理及实现
- [李景山php]每天laravel[036]-laravel 系统服务 --- 认证-1
- 十八、UI-Grid 大数据集