1_5 자료구조와 알고리즘의 이해
2023. 3. 4. 20:40ㆍ자료구조_C
※ 이진 탐색 알고리즘의 소개 1
☞ 이진 탐색 알고리즘의 첫번째 시도
1. 배열 인덱스의 시작과 끝은 각각 0 과 8이다
2. 0과 8을 합하여 그 결과를 2로 나눈다.
3. 2로 나눠서 얻은 결과 4를 인덱스 값으로 하여 arr[4]에 저장된 값이 3인지 확인!
arr[] = { 1,2,3,7,9,12,21,23,27 }
* 순차 탐색보다 훨씬 좋은 성능을 보이지만, 배열이 정렬되어 있어야 한다는 제약이 따른다.
1 | 2 | 3 | 7 | 9 (중앙 인덱스) |
12 | 21 | 23 | 27 |
arr0 | arr1 | arr2 | arr3 | arr4 | arr5 | arr6 | arr7 | arr8 |
☞ 이진 탐색 알고리즘의 두번째 시도
1. arr[4]에 저장된 값 9와 탐색 대사인 3의 대소를 비교한다.
2 대소의 비교결과는 arr[4] > 3 이므로 탐색의 범위를 인덱스 기준 0~3으로 제한한다.
3. 0과 3을 더하여 그 결과를 2로 나눈다. 이 때 나머지는 버린다.
4. 2로 나눠서 얻은 결과가 1이니 arr[1]에 저장된 값이 3인지 확인한다.
1 | 2 | 3 | 7 | 9 | 12 | 21 | 23 | 27 |
arr0 | arr1 | arr2 | arr3 | arr4 | arr5 | arr6 | arr7 | arr8 |
* arr[5] - arr[8]은 탐색 대상에서 제외시킨다.
☞ 이진 탐색 알고리즘의 세번째 시도
1 | 2 | 3 | 7 | 9 | 12 | 21 | 23 | 27 |
arr0 | arr1 | arr2 | arr3 | arr4 | arr5 | arr6 | arr7 | arr8 |
1. arr[1]에 저장된 값 2와 탐색 대상인 3의 대소를 비교한다.
2. 대소의 비교결과는 arr[1] < 3 이므로 탐색의 범위를 인덱스 2~3으로 제한한다.
3. 2와 3을 더하여 그 결과를 2로 나눈다. 이 때 나머지는 버린다.
4. 2로 나눠서 얻은 결과가 2이니 arr[2]에 저장된 값이 3인지 확인한다.
* 이로써 이진 탐색은 마무리가 된다.
'자료구조_C' 카테고리의 다른 글
1_6 자료구조와 알고리즘의 이해 (1) | 2023.03.04 |
---|---|
1_4 자료구조와 알고리즘의 이해 (1) | 2023.03.04 |
1_3 자료구조와 알고리즘의 이해 (0) | 2023.03.04 |
1_2. 알고리즘의 성능 분석 방법 (0) | 2023.03.04 |
1_1. 자료구조와 알고리즘의 이해 (1) | 2023.03.04 |