一、二分查找 (数组里查找某个元素)
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 }