> 웹 프론트엔드 > JS 튜토리얼 > javascript half search_javascript 스킬에 대한 자세한 설명

javascript half search_javascript 스킬에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 16:17:59
원래의
1856명이 탐색했습니다.

반쪽 검색 방법:

정렬된 목록에서 검색할 데이터 값을 검색 범위의 중간 요소 값과 비교할 때 다음 세 가지 상황이 발생합니다.

1) 찾으려는 데이터 값이 중간 요소 값과 정확히 일치하는 경우 중간 요소 값의 인덱스를 반환합니다.

2) 검색할 데이터의 값이 중간 요소 값보다 작은 경우 전체 검색 범위의 전반부를 새로운 검색 범위로 사용하고, 1) 동일한 값이 나올 때까지 실행됩니다. 설립하다.

3) 검색할 데이터의 값이 중간 요소의 값보다 큰 경우 전체 검색 범위 중 후반부를 새로운 검색 범위로 사용하고, 1) 동일한 값이 나올 때까지 실행됩니다. 발견되었습니다

4) 결국 동일한 값이 발견되지 않으면 오류 메시지가 반환됩니다.

이진 트리로 이해: 가운데 값은 이진 트리의 루트, 전반부는 왼쪽 하위 트리, 후반부는 오른쪽 하위 트리입니다. 절반 검색 방법의 검색 횟수는 정확히 값이 위치한 수준의 수입니다. 등확률 조건에서 대략

log2(n 1)-1

코드 복사 코드는 다음과 같습니다.

//Data는 검색할 배열, x는 검색할 데이터 값, beg는 검색 범위의 시작, last는 검색 범위의 끝
//비재귀적 방법
int BiSearch(int data[], const int x, int beg, int last)
{
int mid;//중간 위치
(구걸 > 마지막)

반환 -1
}  
동안(구걸 <= 마지막)

         mid = (마지막으로 요청) / 2; If (x == 데이터[mid] )
~ 반납
~          else if (data[mid] < x)
~                 구걸 = 중간 1;                                            ~          else if (data[mid] > x)
~ 마지막 = 중간 - 1
~ }  
반환 -1
}
//재귀적 방법
int IterBiSearch(int data[], const int x, int beg, int last)
{
int mid = -1; mid = (마지막으로 요청) / 2; If (x == 데이터[mid])

반납
}  
else if (x < 데이터[중간])

         return IterBiSearch(data, x, beg, mid - 1)
}  
else if (x > 데이터[mid])

         return IterBiSearch(데이터, x, 중간 1, 마지막); }  
반환 -1
}
//주요 함수
int _tmain(int argc, _TCHAR* argv[])
{
int data1[60] = {0}; int no2search = 45
cout << "배열은 다음과 같습니다. " << int siz = sizeof(data1)/sizeof(int)
for (int i = 0; i < siz; i )

          data1[i] = i;                                   cout << data1[i] << "
}  
cout
정수 인덱스 = -1; //인덱스 = BiSearch(data1, no2search, 0, siz)
인덱스 = IterBiSearch(data1, no2search, 0, siz)
cout << "의 인덱스" << index
Getchar()
0을 반환합니다.
}

复主代码 代码如下:

/**
* 배열에서 문자의 위치를 ​​반씩 찾습니다(정렬된 목록)
* @param array 검색된 배열
* @param x
검색할 문자 * @returns 배열에서 문자의 위치를 ​​찾을 수 없으면 -1을 반환합니다.
​*/ 
함수 바이너리 검색(배열,x){
  var lowPoint=1;                    
 var higPoint=array.length;
 var returnValue=-1;               
 var midPoint;
 var 발견=false;                  
 while ((lowPoint<=higPoint)&&(!found)){
  midPoint=Math.ceil((lowPoint higPoint)/2);
  //console.log(lowPoint "====" midPoint "====" higPoint);
  if(x>배열[midPoint-1]){
   lowPoint=midPoint 1;
  }
  else if(x    higPoint= midPoint-1;
  }
  else if(x=배열[midPoint-1]){
   발견=true;
  }
 }
 if(발견){
    returnValue=midPoint;
 }
 returnValue;
}
/*var array2=[1,2,3,4,5,6,7,8,9,100,109];*/
var array2=['a','b','c','d','e','f','g'];
console.log(binarySearch(array2,'c'));
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿