PHP

二分探索(バイナリーサーチ) PHP

 

binarySearch.php

<?php

class Algorithm
{

        static function binarySearch( $arr, $num )
        {
                $trials = 1;                 // 試行回数
                $low    = 0;                 // 最小範囲
                $high   = count( $arr ) - 1; // 最大範囲


                while( $low <= $high )
                {
                        $pivot = ($low + $high) / 2;
                        $pivot = (int)$pivot;

                        if($arr[$pivot] == $num)
                        {
                                return array( $num, $trials );
                        }

                        if($num > $arr{$pivot})
                        {
                                $low = $pivot + 1;
                        }
                        if($num < $arr{$pivot})
                        {
                                $high = $pivot -1;
                        }

                        ++$trials;
                }

                return null;

        }

}



// ------------------------------------------------------------
$arr = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14  );
$num = 8;
// ------------------------------------------------------------


$anser = Algorithm::binarySearch( $arr, $num );

var_dump($anser);
echo "<hr/>";
echo "ナンバー:{$anser[0]} <br/>";
echo "試行回数:{$anser{1}} <br/>";

 

 

 

 

表示結果

array(2) { [0]=> int(8) [1]=> int(4) }

ナンバー:8 
試行回数:4

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)