👩🏻‍💻기초지식/CS

[알고리즘] 이분 탐색/이진 탐색 (Binary Search)

공대 컴린이 2023. 10. 3. 20:32
728x90

정의

이진 탐색 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법입니다.

 

조건

이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘입니다.

 

과정

start, end, mid의 변수 3개를 사용하여 탐색을 수행하고, 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교하여 원하는 데이터를 찾습니다.

 

시간복잡도

O(log N)

단계마다 탐색 범위를 반으로 나누는 것 "÷2" 과 동일하므로 O(logN)의 시간복잡도를 갖습니다.

 

구현

이분탐색을 반복문 혹은 재귀함수로 직접 구현할 수도 있고, C++의 lower_bound 함수를 사용할 수도 있습니다.

 

(자세한 사용 방법과 예시는 아래 코딩테스트 문제를 풀었을 때의 내용을 참고)

2023.08.10 - [💻코딩테스트/백준] - [백준/C++] 12015번 : 가장 긴 증가하는 부분 수열 2 (LIS 수열 문제)

 

[백준/C++] 12015번 : 가장 긴 증가하는 부분 수열 2 (LIS 수열 문제)

가장 긴 증가하는 부분 수열 2 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분

cse-child.tistory.com


참조

https://velog.io/@kimdukbae/%EC%9D%B4%EB%B6%84-%ED%83%90%EC%83%89-%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89-Binary-Search

 

[알고리즘] 이분 탐색 / 이진 탐색 (Binary Search)

이진 탐색(이분 탐색) 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는

velog.io

 

728x90