PHP의 이진 검색 알고리즘 예제에 대한 자세한 설명

墨辰丷
풀어 주다: 2023-03-28 22:28:01
원래의
1744명이 탐색했습니다.

이 글에서는 주로 PHP의 이진 검색 알고리즘을 소개합니다. 이진 검색 알고리즘의 원리와 구체적인 구현 기술을 예제 형식으로 요약하고 분석합니다. 필요한 친구가 참고할 수 있습니다.

이진 검색을 개발에 사용할 수도 있습니다. 물론 대기업에서 취업할 때 이런 면접 질문이 있을 겁니다. PHP에서 이분법 검색을 구현하는 방법에 대한 기사를 살펴보겠습니다.

이분법. (이분법) 즉, 하나 [a, b]를 R의 닫힌 구간이라고 가정하여 둘로 나누는 방법, 연속 이분법은 다음과 같은 구간 수열([an, bn])을 생성하는 것이다: a0=a, b0=b, 그리고 임의의 자연수 n에 대해 [an+1, bn+1]은 [an, cn]과 같거나 [cn, bn]과 같습니다. 여기서 cn은 [an, bn]의 중간점을 나타냅니다. .

예제 1:

header('Content-Type: text/html; charset=utf-8;');
$arr = array(2,33,22,1,323,321,28,36,90,123);
sort($arr);
//二分法查找
echo $index = binarySearch($arr,321);
function binarySearch($arr,$key){
 $len = count($arr);
 $mid = -1;
 $start = 0;
 $end  = $len-1;
 while($start<=$end){
 $mid = (int)(($start+$end)/2);
 echo $mid."\n";
 if($arr[$mid] == $key){
  return $mid;
 }else if($arr[$mid] < $key){
  $start = $mid+1;
 }else if($arr[$mid] > $key){
  $end = $mid-1;
 }
 }
}
로그인 후 복사

예 2:

<?php
//search函数 其中$array为数组,$k为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值
function search($array, $k, $low=0, $high=0)
{
  if(count($array)!=0 and $high == 0) //判断是否为第一次调用
  {
    $high = count($array);
  }
  if($low <= $high) //如果还存在剩余的数组元素
  {
    $mid = intval(($low+$high)/2); //取$low和$high的中间值
    if ($array[$mid] == $k) //如果找到则返回
    {
      return $mid;
    }
    elseif ($k < $array[$mid]) //如果没有找到,则继续查找
    {
      return search($array, $k, $low, $mid-1);
    }
    else
    {
      return search($array, $k, $mid+1, $high);
    }
  }
  return -1;
}
$array = array(4,5,7,8,9,10); //测试search函数
echo search($array, 8); //调用search函数并输出查找结果
?>
로그인 후 복사

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

관련 권장 사항:

php데이터베이스 작업 구현 모델 클래스

phpURL 암호화 및 암호 해독 구현

PHP foreach는 다차원 배열 순회를 구현합니다

위 내용은 PHP의 이진 검색 알고리즘 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿