자바 - 이진 검색

또한 이진 검색 이진 검색으로 알려진, 높은 효율적인 검색 방법이다.

이진 검색 알고리즘은 직렬로 배열 (오름차순 또는 내림차순) 주문하여 생각하고, 그 값이보고 요소보다 작은 경우, 즉 모드 점프 찾기 사용, 비교의 첫번째 명령 시퀀스의 중간 위치를 찾는 과정 왼쪽 절반으로 감소 중간 요소 순서, 오른쪽 절반 것, 그렇지 않으면 불명. 비교하여 반감 간격을 보인다. 이진 검색은 효율적인 검색 방법이다. 그것은 크게, 비교의 수를 줄일 검색의 효율성을 향상시킬 수 있습니다. 그러나 전제 조건은 이진 검색 조회 테이블 데이터 요소 주문해야한다는 것입니다.

이진 검색 방법의 장점은 상대적으로 적게 빠르고 좋은 평균 성능을 찾을 수 있습니다, 단점은 삭제하고 어려운 삽입, 조회 테이블을 주문하는 요구 사항입니다. 따라서, 이진 검색 방법은 자주 변경 자주 정렬 된 목록을 찾을 수 없습니다에 적용 할 수있다.

이분법 알고리즘 단계들이 기재된

① 우선, 중간 위치를 찾기 위해 전체 범위를 결정하는 중간 = (좌측 + 우측) / 2

② 키 값은 조사하고자하는 키 값과 상기 중간 위치와 비교된다;

동일한 경우, 성공을 찾을 수

그렇다면, 이진 검색 (오른쪽) 반 지역은 계속 다음 후

10 개 미만인 경우에는, 전면 (좌측) 이진 검색은 절반 영역이 계속

결정된 이진 화학식 후 감소 영역 ③ 상기 단계를 반복한다.

마지막으로, 결과를 얻을 : 성공, 또는 찾을 실패를 찾는 중. 저장소의 1 차원 배열을 사용하여 저장 구조의 이진 검색. 이진 검색 알고리즘의 예

바이너리 서치 알고리즘, 검색 키 값 (81) 상기 (순서)의 열이 일정한 수 3,5,11,17,21,23,28,30,32,50,64,78,81,95,101 {}를 들어 데이터 요소.

이진 검색 알고리즘을 논의 :

장점 : ASL≤log2n, 즉 비교를 통해, 그것은 반마다 봐 감소된다. log2n 시간 관리함으로써 검색 프로세스를 완료합니다.

단점 : 요구 사항과 질서, 그것은이 주문하는 열 수를 찾을 필요하며, 크기에 따라 정렬 된 모든 데이터 요소에 대한 매우 시간이 많이 걸리는 작업이기 때문이다. 또한, 순차 저장 삽입의 구조 작업이 편리하지 않습니다 삭제합니다.

고려 : 효율성을 달성하기 위해, 상대적으로 많은 부분 (즉, 다음 비교 한 후, 찾는이 이하로 감소)에 의해 포기 수 있습니다. ......?

두 가지 방법 (순차 검색과 이진 검색)을 함께 고려할 수 있습니다, 그 효율 개선의 목적을 달성하기 위해, 감독의 간단한 순차 검색과 이진 검색의 효율성을하는 것입니다? 사실,이 아이디어는 블록 검색 알고리즘이다.

공용 클래스 BinarySearch { 
    공공 정적 무효 메인 (문자열 []에 args) { 
        INT [] A = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101}; 
        INT 타겟 = 81 // 81查找的索引位置; 
        INT 0 = 왼쪽; 
        INT 오른쪽 A.length = 1; 
        중간 = INT (왼쪽 오른쪽 +) / 2; 
        반면 (좌회전 <= 우측) { 
            경우 (A [미드] == 타겟) { 
                에서 System.out.println (MID); 
                단절; 
            } 
            (A [미드]> 타겟) {경우 
                오른쪽 = 미드; 
                중간 = (좌측 + 우측) / 2; 
            } 
            경우 (A [미드] <타겟) { 
                좌측 = 미드;
                중간 = (좌측 + 우측) / 2; 
            } 
        } 
    } 
}

  이진 검색 관련 항목 :

개인 정적 INT binarySearch0 (INT []는, INT가 fromIndex, toIndex의 INT, 
                                     INT 키) { 
        INT가 fromIndex = 로우; 
        INT toIndex의 높은 = - 1; 

        (저 <= 높음) {동안 
            INT 중간 = (고 저 +) >>> 1; 
            INT midVal는 [미드] =; 

            경우 (midVal <키) 
                낮은 중간 + = 1; 
            다른 경우 (midVal> 키) 
                높은 = 중간 - 1; 
            다른 
                중반를 반환; 발견 // 키 
        } 
        반환 - (저 + 1); // 키를 찾을 수 없습니다. 
    }

  발췌에 : https://www.cnblogs.com/wxd0108/p/5465926.html

추천

출처www.cnblogs.com/strive-19970713/p/11344798.html