我是靠谱客的博主 动听外套,最近开发中收集的这篇文章主要介绍常见查找算法--(快速查找或二分查找)快速查找:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

快速查找:

快速查找也称二分查找,二分查找的基本思想是将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;
    }
}

最后

以上就是动听外套为你收集整理的常见查找算法--(快速查找或二分查找)快速查找:的全部内容,希望文章能够帮你解决常见查找算法--(快速查找或二分查找)快速查找:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部