PHP 는 어떤 값 을 포함 하 는 지 여 부 를 정렬 하 는 방법 을 찾 습 니 다.
사고:존재 여 부 를 판단 하 는 가장 간단 한 것 은 이 배열 을 직접 순환 하여 모든 값 을 비교 하 는 것 이다.그러나 질서 있 는 배열 에 있어 서 이렇게 쓰 면'질서'라 는 특징 을 전혀 이용 하지 못 했다.
모든 것 을"이분법 찾기"에 사용 합 니 다.
//
$arr = array(2,5,66,87,954,1452,5865);
//
$str = 1452;
//
$front = 0;//
$end = count($arr) - 1;//
$mid = intval(($front + $end) / 2);//
1.첫 번 째 비교 에서 우 리 는 검색 값 str 가 중간 값 mid 와 같 는 지 직접 판단 합 니 다.만약 에 true 로 직접 돌아 가 는 것 과 같 으 면.2.만약 에 검색 값 str 가 중간 값 mid 보다 크 면 검색 값 str 는 중간 값 의 오른쪽 에 있 을 수 있 습 니 다.즉,시작 값 front 에 대해 다시 값 을 부여 해 야 합 니 다=중간 값 mid+1.끝 값 end 는 변 하지 않 고 중간 값 mid 는 새로운 시작 값+끝 값 입 니 다.
3.검색 값 str 가 중간 값 mid 보다 작 으 면 검색 값 str 는 중간 값 의 왼쪽 에 있 을 수 있 습 니 다.즉,시작 값 은 변 하지 않 고 끝 값 end 는 다시 할당 해 야 합 니 다=중간 값-1.순서대로 중간 값 mid 는 시작 값+새로운 끝 값 입 니 다.
--위 와 같이 들 어 오 는 시작 값,끝 값,중간 값 을 비교한다.시작 값 이 종료 값 보다 크 면 찾 지 못 했 음 을 설명 하고 조 회 를 끝내 면 찾 은 것 을 되 돌려 줍 니 다.
구체 적 인 코드 는 다음 과 같다.
$str = 89;//
$arr = [1,55,66,89,420];//
$ren = find($arr, $str);
echo '<pre>';
var_dump($ren);
function find($arr, $str){
$front = 0;//
$end = count($arr) - 1;//
while($front <= $end){// ,
$mid = intval(($front + $end) / 2);//
if($str == $arr[$mid]){
return $mid;//
}
if($str > $arr[$mid]){
$front = $mid + 1;//
}
if($str < $arr[$mid]){
$end = $mid - 1;//
}
}
return false;
}
반환 결과:89 는 네 번 째 요소 값 아래 3 입 니 다.int(3)
다음은 PHP 에서 질서 있 는 배열 이 특정한 값(2 분 검색)을 포함 하 는 지 여 부 를 찾 는 것 입 니 다.추가 사항 이 있 으 면 저희 에 게 연락 하 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.