php二分查找、顺序查找算法
2016-08-07 18:26
543 查看
二分查找的数组必须是排好序的,顺序查找没要求,php查找数组元素有内置的函数array_search和in_array
<?php
//二分查找法
function binSearch($arr,$search){
$height=count($arr)-1;
$low=0;
while($low<=$height){
$mid=floor(($low+$height)/2);//获取中间数
if($arr[$mid]==$search){
return $mid;//返回
}elseif($arr[$mid]<$search){//当中间值小于所查值时,则$mid左边的值都小于$search,此时要将$mid赋值给$low
$low=$mid+1;
}elseif($arr[$mid]>$search){//中间值大于所查值,则$mid右边的所有值都大于$search,此时要将$mid赋值给$height
$height=$mid-1;
}
}
return "查找失败";
}
//二分查找递归实现
function binSearch2($arr,$low,$height,$k){
if($low<=$height){
$mid=floor(($low+$height)/2);//获取中间数
if($arr[$mid]==$k){
return $mid;
}elseif($arr[$mid]<$k){
return binSearch2($arr,$mid+1,$height,$k);
}elseif($arr[$mid]>$k){
return binSearch2($arr,$low,$mid-1,$k);
}
}
return -1;
}
//顺序查找
function seqSearch($arr,$k){
foreach($arr as $key=>$val){
if($val==$k){
return $key;
}
}
return -1;
}
$arr=array(1,2,3,4);
echo binSearch($arr,4).'<br/>';
echo binSearch2($arr,0,4,4).'<br/>';
echo seqSearch($arr,4).'<br/>';
echo in_array(4,$arr).'<br/>';
echo array_search(4,$arr);
<?php
//二分查找法
function binSearch($arr,$search){
$height=count($arr)-1;
$low=0;
while($low<=$height){
$mid=floor(($low+$height)/2);//获取中间数
if($arr[$mid]==$search){
return $mid;//返回
}elseif($arr[$mid]<$search){//当中间值小于所查值时,则$mid左边的值都小于$search,此时要将$mid赋值给$low
$low=$mid+1;
}elseif($arr[$mid]>$search){//中间值大于所查值,则$mid右边的所有值都大于$search,此时要将$mid赋值给$height
$height=$mid-1;
}
}
return "查找失败";
}
//二分查找递归实现
function binSearch2($arr,$low,$height,$k){
if($low<=$height){
$mid=floor(($low+$height)/2);//获取中间数
if($arr[$mid]==$k){
return $mid;
}elseif($arr[$mid]<$k){
return binSearch2($arr,$mid+1,$height,$k);
}elseif($arr[$mid]>$k){
return binSearch2($arr,$low,$mid-1,$k);
}
}
return -1;
}
//顺序查找
function seqSearch($arr,$k){
foreach($arr as $key=>$val){
if($val==$k){
return $key;
}
}
return -1;
}
$arr=array(1,2,3,4);
echo binSearch($arr,4).'<br/>';
echo binSearch2($arr,0,4,4).'<br/>';
echo seqSearch($arr,4).'<br/>';
echo in_array(4,$arr).'<br/>';
echo array_search(4,$arr);
相关文章推荐
- 一步一步复习数据结构和算法基础-顺序查找+二分查找
- PHP算法之二分查找和顺序查找
- PHP 数组排序(冒泡排序、选择排序);数组查找(顺序查找、二分查找)
- php顺序查找和二分查找示例
- 查找(顺序、二分、斐波那契和插值)算法的实现和测试
- php 二分算法查找
- php:顺序查找和二分查找
- php 随机生成100个100万以内的数,顺序查找,二分查找
- php数组的顺序查找和二分查找
- Java必知必会查找算法:顺序查找、二分查找
- php顺序、二分查找
- PHP 顺序查找、二分查找
- php顺序查找和二分查找示例
- php关于二分查找的算法
- PHP:冒泡排序、快速查找和二分查找的思路以及算法
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
- 算法易错点:二分代码/奇偶调顺序/查找第一次出现的字符
- 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
- C语言查找算法之顺序查找、二分查找(折半查找)
- 数据结构与算法--查找之顺序查找和二分查找