概述
快速查找:
快速查找也称二分查找,二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
递归实现:
$search = 80;
$a = array(5,13,19,21,37,56,64,75,80,88,92);
$len = count($a);
$start =0;
$end = $len-1;
$middle = floor(($start+$end)/2);
bin_search($a,0,$len-1,80);
function bin_search($ary,$start, $end ,$search) {
$mid = floor(($start+$end)/2);
if($ary[$mid] == $search) {
echo $search;
echo "middle=".$mid;
}elseif($search < $ary[$mid]) {
$end = $mid-1;
bin_search($ary,$start,$end,$search);
} else if($search > $ary[$mid]) {
$start = $mid+1;
bin_search($ary, $start, $end, $search);
}
}
非递归实现:
$search = 80;
$a = array(5,13,19,21,37,56,64,75,80,88,92);
$len = count($a);
$start =0;
$end = $len-1;
$middle = floor(($start+$end)/2);
while(true) {
if($search > $a[$middle]) {
$start= $middle+1;
$middle = ceil(($start+$end)/2);
} elseif($search <$a[$middle]) {
$end = $middle-1;
$middle = ceil(($start+$end)/2);
} else {
echo 'search ='.$search.',middle='.$middle."a[middle]=".$a[$middle];
break;
}
}
最后
以上就是动听外套为你收集整理的常见查找算法--(快速查找或二分查找)快速查找:的全部内容,希望文章能够帮你解决常见查找算法--(快速查找或二分查找)快速查找:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复