>  기사  >  백엔드 개발  >  PHP 배열의 검색 알고리즘은 무엇입니까? 그것을 찾는 방법?

PHP 배열의 검색 알고리즘은 무엇입니까? 그것을 찾는 방법?

慕斯
慕斯원래의
2021-06-23 18:02:371621검색

PHP에는 많은 검색 알고리즘이 있습니다. 어떤 것을 알고 있나요? 검색 알고리즘의 의미를 어떻게 이해합니까? 이 기사에서는 알고리즘에 대한 몇 가지 미스터리를 탐구해 보겠습니다. 배열의 검색 알고리즘이 무엇인지 논의해 보겠습니다. 그것을 찾는 방법?

관련 추천: PHP의 파사드 패턴은 무엇인가요? 그의 강점은 무엇입니까? 적용 가능한 시나리오는 무엇입니까?

검색 알고리즘:

검색 알고리즘 의미:

검색은 많은 양의 정보에서 특정 정보 요소를 찾는 것입니다. 컴퓨터 응용 프로그램에서 검색은 일반적으로 사용되는 기본 작업입니다.

검색 알고리즘은 검색 프로세스에 해당하는 코드 구조를 나타냅니다. 중대형 배열에서 원하는 요소를 빠르게 찾아내는 것입니다. .

순차 검색 알고리즘:

순차 검색은 연구 검색이라고도 합니다. 데이터 구조 선형 테이블의 - 끝부터 시작하여 순차적으로 검색한 후 검색된 노드 키워드를 주어진 값 k와 비교합니다. areequal은 검색이 성공한 것을 의미하고, 검색 후에도 k와 동일한 키워드를 가진 노드가 발견되지 않으면 검색이 실패했음을 의미합니다.

코드를 예로 들어보겠습니다:

<?php
//查找算法
//顺序查找
$arr = array(1,3,6,8,23,68,100);
//顺序查找:从数组第一个元素开始,挨个匹配
function check_order($arr , $num){
//全部匹配
for($i = 0,$len = count($arr);$i <$len;$i++){
//判断
if($arr[$i] == $num){
return $i;
}
}
return false ;
}
var_dump(check_order($arr,5));

PHP 배열의 검색 알고리즘은 무엇입니까? 그것을 찾는 방법?

이진 검색 알고리즘

이진 검색에서는 선형 테이블의 노드가 키워드 값에 따라 오름차순 또는 내림차순으로 정렬되어야 하며 초기 값 k는 다음과 같습니다. 먼저 중간 노드 키워드 비교와 함께 사용되며, 중간 노드는 선형 테이블을 두 개의 하위 테이블로 나눕니다. 둘이 동일하지 않으면 검색에 성공하고, k와 중간 노드의 키워드를 비교합니다. 다음에 검색할 하위 테이블을 결정하는 데 사용됩니다. 검색이 발견되거나 검색이 종료되고 테이블에 해당 노드가 없다는 것이 발견될 때까지 계속됩니다.

반 알고리즘 아이디어:

1. 배열의 길이를 계산합니다.

2. 왼쪽과 오른쪽의 포인터 위치를 결정합니다.

3. 중간 위치를 찾으세요. +

4.

5. 그런 다음 크기에 따라 경계를 다시 정의합니다.

<?php
//查找算法
//顺序查找
$arr = array(1,3,6,8,23,68,100);
//顺序查找:从数组第一个元素开始,挨个匹配
function check_order($arr , $num){
//全部匹配
for($i = 0,$len = count($arr);$i <$len;$i++){
//判断
if($arr[$i] == $num){
return $i;
}
}
return false ;
}
//var_dump(check_order($arr,5));
//二分查找算法
//1、 得到数组边界
$right = count($arr);
$left= 0;
$res = 3;
//2、循环匹配,
while($left <=$right){
//3、得到中间位置
$middle = floor(($right + $left) / 2);
//4、匹配数据.
if($arr[$middle] == $res){
  echo $middle;
break;
}
//5、没有找到
if($arr[$middle] < $res){
//值在右边
$left = $middle + 1;
}else{
  //值在左边
  $right = $middle - 1;

PHP 배열의 검색 알고리즘은 무엇입니까? 그것을 찾는 방법?

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 배열의 검색 알고리즘은 무엇입니까? 그것을 찾는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.