用php二分法查找一个值在数组中的位置
2017-10-20 17:17
615 查看
首先,用二分法的话数组必须是一个有序的数组,可以从大到小也可以从小到大,下边我给的是数组从小到大排列的方法:
$arr = array(2,4,8,9,10,12,14,16,18,22,36,46,54);
$low = 0; //要查找范围的最小键值
$search =
22; //要查找的值
$high = count($arr)-1; //计算出数组的长度
while($low <= $high){ //取得数组的中间键值
$mid = intval(($low+$high)/2);
if($arr[$mid]==$search){ //如果取出中间的下标值跟你要搜索的值相等的话,直接去除值得下标就行
echo "你要查找的值在数组内的下标为".$mid; break;
}else if($arr[$mid] > $search){
$high = $mid -1;
}else{
$high = $mid+1;
}
}
$arr = array(2,4,8,9,10,12,14,16,18,22,36,46,54);
$low = 0; //要查找范围的最小键值
$search =
22; //要查找的值
$high = count($arr)-1; //计算出数组的长度
while($low <= $high){ //取得数组的中间键值
$mid = intval(($low+$high)/2);
if($arr[$mid]==$search){ //如果取出中间的下标值跟你要搜索的值相等的话,直接去除值得下标就行
echo "你要查找的值在数组内的下标为".$mid; break;
}else if($arr[$mid] > $search){
$high = $mid -1;
}else{
$high = $mid+1;
}
}
相关文章推荐
- PHP写一个二分法查找一个值在数组中的位置
- 利用二分法查找一个数字在数组中的位置
- 二分法实现一个整形有序数组的二分查找
- PHP基于二分法实现数组查找功能示例【循环与递归算法】
- 递增有序数组中,查找某一个数字的位置
- 【小米校招笔试】一个数组是由有序数组经过n次循环移动后所得,请你用最快速度查找某个元素位置
- PHP 查找一个在数组中出现次数超过一半的数,时间复杂度O(n),空间复杂度O(1)
- PHP - Manual手册 - CLXI. String 字符串处理函数 - strpos查找一个字符串第一次出现的位置
- php查找一个元素或字符串是否在数组中的三种做法
- 对于一个有序的数组,如果要插入一个元素并保证数组还有序, 问如何获取该元素位置。用二分法
- 在排序的数组中二分查找一个元素,返回在数组中它第一次出现的位置
- 如何使用Linq查找数组中一个元素所在的位置
- C#版本,二分法查找元素是否在一个目标数组中?
- 有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置
- 【捷哥浅谈PHP】第三弹---使用二分查找法查找数组中的元素位置
- 解析php二分法查找数组是否包含某一元素
- 利用Collections工具类查找一个字符串在字符串数组里的位置即其角标
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
- :输入10个整数,保存在一个数组中,在数组中查找某个数,给出是否找到的信息。如果找到了,要求输出该数在数组中所处的位置;如果找不到,输出“没有找到!