이진 탐색 (Binary Search)

2023. 4. 29. 19:54·알고리즘 (with JAVA)/기본 알고리즘

1. 개념 설명

(1) 이진 탐색은 정렬된 배열에서 검색 범위를 줄여 나가면서 원하는 데이터를 검색하는 알고리즘이다.

 

(2) 이진 탐색은 오름차순으로 정렬된 정수의 리스트를 같은 크기의 두 부분 리스트로 나누고 필요한 부분

에서만 탐색하도록 제한하여 원하는 원소를 찾는 알고리즘이다.

 

 

 

 

2. 과정

by wiki

- 실제로 수행되는 과정이다.

 

 

 

 

3. 코드

public class BinarySearch {
    static int[] A = { 7, 2, 8, 10, 1 };
 
    public static void main(String[] args) {
        Arrays.sort(A);
        solve(10, 0, A.length-1);
    }
    
    public static void solve(int a, int low, int high){
        int mid=0;
        
        while(low<=high) {
            mid = (low+high)/2;
            
            if(A[mid]==a) {
                break;
            }else if(A[mid] < a) {
                low = mid+1;
            }else {
                high = mid-1;
            }
        }
        System.out.println(mid + " 인덱스 위치에 있습니다. ");
    }
}
Colored by Color Scripter
cs

 

 

 

 

4. 시간 복잡도

(1) 이진 탐색의 시간복잡도는 O(logN)이다.

 

 

 

 

5. 공간 복잡도

(1) 주어진 배열 안에서 정렬이 일어나므로, 공간 복잡도는 O(1)이다.

저작자표시 (새창열림)

'알고리즘 (with JAVA) > 기본 알고리즘' 카테고리의 다른 글

DFS (Depth First Search)  (0) 2023.05.05
해시 테이블 (Hash Table)  (0) 2023.05.01
계수 정렬 (Counting Sort)  (0) 2023.04.29
기수 정렬 (Radix Sort)  (0) 2023.04.29
힙 정렬 (Heap Sort)  (0) 2023.04.29
'알고리즘 (with JAVA)/기본 알고리즘' 카테고리의 다른 글
  • DFS (Depth First Search)
  • 해시 테이블 (Hash Table)
  • 계수 정렬 (Counting Sort)
  • 기수 정렬 (Radix Sort)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      serializable
      안드로이드 스튜디오
      TCP 소켓 프로그래밍
      소켓 프로그래밍
      ServerSocket
      중간연산
      map()
      snail
      람다식
      java.time 패키지
      안정 정렬
      outputstream
      스트림
      자바 개념
      InputStream
      file
      코드트리
      알고스팟
      Collections Framework
      역직렬화
      코딩테스트
      다형성
      선택 정렬
      코딩트리조별과제
      제자리 정렬
      Arrays
      불안정 정렬
      유용한 클래스
      java.lang패키지
      문자 기반 스트림
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    이진 탐색 (Binary Search)
    상단으로

    티스토리툴바