<?php #二分查找 function binarySearch($arr, $target) { $low = 0; $high = count($arr) - 1; while($low <= $high) { $mid = floor(($low + $high) / 2); #找到元素 if($arr[$mid] == $target) return $mid; #中元素比目标大,查找左部 if($arr[$mid] > $target) $high = $mid - 1; #重元素比目标小,查找右部 if($arr[$mid] < $target) $low = $mid + 1; } #查找失败 return false; } $data = array(1,2,6,3,4,5,7,8,9) //一定要是一个有序的数组 正序倒序均可!! sort($data); var_dump(binarySearch($data,5))
时间: 2024-10-19 02:27:17