PHP算法之二分查找和顺序查找

一、二分查找 (数组里查找某个元素)

 1 /**
 2  * 二分查找 (数组里查找某个元素)
 3  * $k为要查找的关键字(注:待查找的数组元素为奇数个)$low为查找范围的最小键值,$high为查找范围的最大键值  
 4  */
 5 $low = min(array_keys($array));
 6 $high = max(array_keys($array));
 7 function dichotomy_search($array, $low, $high, $k) {
 8     if ($low <= $high) {
 9         $mid = intval ( ($low + $high) / 2 );
10         if ($array [$mid] == $k) {
11             return $mid;
12         } elseif ($k < $array [$mid]) {
13             return dichotomy_search ( $array, $low, $mid - 1, $k );
14         } else {
15             return dichotomy_search ( $array, $mid + 1, $high, $k );
16         }
17     }
18     return -1;
19 }

二、顺序查找 (数组里查找某个元素)

 1 /**
 2  * 顺序查找 (数组里查找某个元素)
 3  * $array为数组,$k为要查找的值  
 4  */
 5 function sequential_search($array, $k) {
 6     $n = count($array);
 7     $array[$n] = $k;                //新建一个元素,并将k存放进去  
 8     for($i = 0; $i < $n; $i++) {
 9         if($array[$i] == $k) {
10             break;
11         }
12     }
13     if($i < $n) {                 //如果在新元素的前面找到了要找的值,则返回该值 
14         return $i;
15     } else {
16         return -1;
17     }
18 }
原文地址:https://www.cnblogs.com/h07061108/p/sequential_dichotomy.html