欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

數(shù)據(jù)結(jié)構(gòu)之查找(php代碼實(shí)現(xiàn))

/**
 * Search_Seq($arr,$elem):順序查找
 * Search_Seq2($arr,$elem):順序查找(優(yōu)化)
 * Search_bin($arr,$elem):二分查找
 * SearchBST($elem):二叉搜索
 */
class Search{
    public $arr;

    function __construct($arr)
    {
        $this->arr = $arr;
    }


    /**
     * 順序查找
     * @param $arr  在$arr數(shù)組中查找
     * @param $elem 查找數(shù)組中是否有存在元素$elem,有則返回在數(shù)組中的位置;沒有則返回0
     */
    public static function Search_Seq($arr,$elem){
        for($i=0;$i<count($arr);$i++) {
            if($arr[$i]==$elem){
                return $i;
            }
        }
        return 0;
    }
    //此算法是對(duì)上面算法的一種優(yōu)化
    public static function Search_Seq2($arr,$elem){
        $i=0;
        while($arr[$i]!=$elem){
            $i++;
        }
        return $i;
    }

    /**
     * 二分查找(也叫做折半查找),前提是數(shù)組必須有序——從小到大排列
     * @param $arr  在$arr數(shù)組中查找
     * @param $elem 查找數(shù)組中是否有存在元素$elem,有則返回在數(shù)組中的位置;沒有則返回0
     */
    public static function Search_bin($arr,$elem){
        $low=0;
        $high=count($arr);
        while($low<=$high){
            $mid=round(($low+$high)/2);
//            $mid=$low+($low+$high)*($elem-$arr[$low])/($arr[$high]-$arr[$low]); //若將$mid的值改為此句,則就成了插值查找了。這種查找算法在數(shù)據(jù)大小分布比較均勻的時(shí)候,效率會(huì)比折半查找高一些。
            if($elem<$arr[$mid]){
                $high=$mid-1;
            }else if($elem>$arr[$mid]){
                $low=$mid+1;
            }else{
                return $mid;
            }
        }
        return 0;
    }


    /**
     * 二叉排序樹
     * @param $elem
     * @return int
     */
    public function SearchBST($elem){
       return $this->find($this->arr[0],$elem,0);
    }
    private function find($root,$elem,$i){
        if($i>count($this->arr) || !$root){
            return 'Error';
        }
        if($elem==$root){
            return $i;
        }
        if($elem<$root && $i*2+1<count($this->arr)){
            return  $this->find($this->arr[$i*2+1],$elem,$i*2+1);
        }else if($elem>$root && $i*2+2<count($this->arr)){
            return  $this->find($this->arr[$i*2+2],$elem,$i*2+2);
        }
        return 0;
    }
}

當(dāng)前標(biāo)題:數(shù)據(jù)結(jié)構(gòu)之查找(php代碼實(shí)現(xiàn))
網(wǎng)站路徑:http://www.chinadenli.net/article6/gpcgig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)企業(yè)網(wǎng)站制作響應(yīng)式網(wǎng)站建站公司網(wǎng)站策劃品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司