- 首先,用二分法的话数组必须是一个有序的数组,可以从大到小也可以从小到大,下边我给的是数组从小到大排列的方法:
- $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;
- }
- }
相关文章
- 算法刷题-分隔链表、合并两个有序链表、在排序数组中查找元素的第一个和最后一个位置
- 【LeeCode】34. 在排序数组中查找元素的第一个和最后一个位置
- 在一个字符串中查找另一个字符串的位置用什么函数
- 用折半查找法在一组排好序(递增有序或递减有序)的值中查找某个数据+ 冒泡排序+选择排序+数组排序(例子)
- 如何从另一个数组的值在PHP中构建多维数组的键?
- 用二分法在一个数组中查找数组元素
- 二分法查找一个值在数组中的位置 --小明同学
- 用php二分法查找一个值在数组中的位置
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 【求职之路】(1)利用二分法查找一个数字在数组中的位置