개발새발 로그

이분탐색 본문

알고리즘

이분탐색

이즈흐 2023. 6. 4. 22:28

저장되어있는 데이터를 탐색하는 방법은 크게 두가지로 나뉩니다.

바로 순차탐색이분탐색입니다.

 

먼저 순차탐색에 대해 알아 보겠습니다.

 

순차탐색

5 9 2 1 4 3 8 0 7 에서 데이터 2는 몇번째 위치에 존재할까요??

 

0부터0까지의 숫자 중 2를 찾아야하는데 숫자들 서로 연관없이 무작위로 섞여있습니다.

이럴때는 단순하게 앞에서부터 하나씩 데이터를 확인하여 탐색해야합니다.

 

순차탐색은 데이터의 정렬유무에 상관없이 앞에서부터 데이터를 하나씩 확인하여 탐색하는 알고리즘입니다.

 

 

이분탐색

1 3 5 7 9 11 13 15 17 19 21 23에서 데이터 11은어디에 존재하는가?

 

여기에서는 이미 배열의 데이터가 정렬되어있는 상태입니다.

이런 상황에서는 데이터를 더 빠르게 탐색할 수 있습니다. 

이유는 다른 위치에 있는 데이터의 범위를 추측할 수 있기 때문입니다.

예를 들어 9의 오른쪽의 숫자들은 9보다 항상 큽니다.

 

이분탐색은 맨 처음에 중간 위치에서부터 출발한다는 특징이있습니다.

위와 같이 mid 값을 검사하고 만약 찾는 값이 아니면 lt와 rt중에 하나를 mid값으로 바꿉니다.

이유는 그 이후나 이전을 탐색할 필요가 없기 때문입니다.

그리고 mid값 lt와 rt값의 2를 나눈 값으로 바꾸면 됩니다,

이를 반복하면 lt와rt가 같아지거나 찾는 값이 mid가 되는 상황이 우리가 정답을 찾게되는 것입니다. 

 

이분탐색은 한 번 탐색할 때마다 크기를 반으로 줄여나간다는 점에서 시간 복잡도 O(Log2N)의 시간 복잡도를 가집니다.

 

728x90
반응형
LIST