十八、二分查找 (由一个数找在数组中的位置)
来源:互联网 发布:java项目开发书籍 编辑:程序博客网 时间:2024/05/02 01:46
<?php//二分查找
//目标:找一个数据(31)在该数组中的位置
$v1 = 15;
$arr2 = array( 3, 4, 5, 15, 19, 21, 25, 30, 30, 30, 33, 38, 44, 51, 52, 55, 60, 77, 80, 82, 83);
//$arr: 要从中找数据的数组
//$v: 要找的数据
//$start: 要从该数组中查找的开始位置
//$start: 要从该数组中查找的结尾位置
function binary_search($arr, $v, $start, $end){
if($start > $end)return false;
$mid = floor(($start + $end)/2); //计算出中间项的位置
if($v == $arr[$mid]){
return $mid; //第一次就找到了
}
else if($v < $arr[$mid]){ //此时就只要去“左边那一半”找了
$start = $start; //左边位置还是左边位置
$end = $mid - 1; //右边位置就应该是$mid - 1;
//if($start > $end)return false;
return binary_search($arr, $v, $start, $end);
}
else{
$start = $mid + 1; //左边位置就应该是$mid + 1
$end = $end; //右边位置还是右边位置;
//if($start > $end)return false;
return binary_search($arr, $v, $start, $end);
}
}
$len = count($arr2);
$result = binary_search($arr2, $v1, 0, $len-1);
if($result === false){
echo "没找到";
}
else{
echo "位置为:$result";
}
?>
0 0
- 十八、二分查找 (由一个数找在数组中的位置)
- 输入一维数组中任意一个数,查找它在数组中的位置
- 34. Search for a Range(二分查找有重复元素数组中的目标数的第一个位置和最后一个位置)
- 用php二分法查找一个值在数组中的位置
- 找元素值在数组中的位置
- 2分法比较一个数在数组中的位置
- 【求职之路】(1)利用二分法查找一个数字在数组中的位置
- 在数组中进行二分查找找出某数在数组中的下标
- 指定数组同时指定要查找的数,找出这个数在数组中的起始位置和结束位置
- 在有序表中进行二分查找,并返回所查找的数在有序表中的位置
- 在一个存十个数的数组中 用户输入一个数 查找出该数所在的位置
- 在排序的数组中二分查找一个元素,返回在数组中它第一次出现的位置
- 查找某个元素在数组中的位置
- 二分查找法找数字位置
- 【二分查找】在一个长度未知的数组中查找一个数,返回其下标,时间复杂度O(logn)
- PHP写一个二分法查找一个值在数组中的位置
- 有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置
- 在二分查找中的一个问题
- java对象之初始化和清理(1)
- vba为每行中最小值单元格添加背景颜色
- Best Time to Buy and Sell Stock II (Java)
- Android中OpenGL使用Matrix.rotateM的困惑
- 【数据结构——树】Trie树的两种实现方式:二叉树(左孩子右兄弟)与二十六叉树
- 十八、二分查找 (由一个数找在数组中的位置)
- SQL数据库升级,SQL损坏修复等解决方法
- 十九、冒泡排序
- unity之怪物生出
- 二十、给出一个数组,求出数组中的最大值
- Unity3D学习之(知识点回顾)
- K-means clustering is not a free lunch
- 简单日期类C++
- 二十一、猴子吃桃问题