2分木探索

必要があって書いた。
https://gist.github.com/4037394

<?php
function search_tree( $src = array(), $target, $end, $begin = false )
{
    if( $begin === false )
    {
    	$begin = floor( $end / 2 );
    }

    //配列ソートする?

    //中央木一致
    if( $src[ $begin ] == $target ){
        return $begin;
    }

    //ノード探索終了
    if( $begin == $end )
    {
        return $begin;
    }

	//shift left
    if( $src[ $begin ] > $target ){

        $end   = $begin;
        $begin = floor( $end  / 2 );

	//shift right
    }else{
        $begin = $begin + ceil( ( $end - $begin ) / 2 );
    }

	//終了するま再帰検索
    return search_tree( $src, $target, $end, $begin );
}

$array = array(
    10,
    39,
    40,
    41,
    42,
    59,
    60,
    80,
    92,
    211,
);
print search_tree( $array, 40, count($array) );

さくっと作れると思ったら意外と時間かかった。。。