phpでの二分探索

<?php
$nums = [1,2,3,4,5,6,7,8,9,10,11,12];
$seek = 5;

binarySearch($nums, $seek);


function binarySearch($nums, $seek) {

	$lower = 0;
	$upper = count($nums);

	while($lower <= $upper) {
		$mid = intval(($lower + $upper) / 2);
		if($nums[$mid] == $seek) {
			echo $mid . "番目に" . $seek . "発見";
			return;
		} elseif($nums[$mid] < $seek) {
			$lower = $mid + 1;
		} else {
			$upper = $mid - 1;
		}
	}
	return;
}

二分探索というのは、ソート済みのデータ構造に対して、まずど真ん中を調べ、
探索目標がその要素よりも大きければ後ろ半分、そうでなければ前半分に対してさらに真ん中(元の状態から考えれば半分の半分)
を調べるというやり方を探索目標に到達するまで繰り返していくアルゴリズムである。
電話帳を開くとき、人は無意識にこのように適当に開いたページを確認して、そこよりも前か後ろ下で張ったヤマを調整しなおしているそうである。