二分查找: 数组必须有序,且不重复。 一般实际工作中,很少有这样的数组,所以应用的很少,但是思想很好. 1 // 二分查找 2 $array = [10,14,23,33,45,56,65,77,89,99,102]; 3 $find = 56; 4 5 function search($array,$find) 6 { 7 $end = count($array)-1; //求出最大的数组个数,并以此为结束 8 $start = 0 ; //以0开始 9 $mid = floor(($end + $start)/2); //取二分查找的中间数 10 while ($start <= $end ){ //当最小下标<最大下标时继续,说明没有查找到 11 if($find < $array[$mid]){ 12 $end = $mid -1; //如果查找的数小于中间数,那么区间的最大下标前移 13 }elseif ($find > $array[$mid]) { 14 $start = $mid +1; //如果查找的数大于中间数,那么区间的最小下标后移 15 }else{ 16 return $mid; //返回查询得到的数字下标 17 } 18 $mid = floor(($end + $start)/2); 19 } 20 } 21 22 echo search($array,$find);
原文地址:https://www.cnblogs.com/qiucw-cn/p/10764821.html
时间: 2024-10-29 09:59:36