알고리즘 - 이진탐색
이진탐색(Binary Search)은 탐색 기법중 하나입니다.
이 알고리즘을 위해 우리는 이진트리(Binary Tree)를 사용하는데 이진트리는 아시다시피 다음 그림과 같습니다.
이진트리(Binary Tree)는 각 Node에 Sibling의 최대 개수가 2개입니다.
이 Binary Tree에
"좌측 노드에는 부모보다 작은 Value를, 우측 노드에는 부모보다 큰 Value를 갖는다."
라는 규칙을 정하면 이진 탐색 트리로 사용할 수 있습니다.
Binary Search Algorithm의 시간복잡도(Time Complexity)는 O(lg n)으로 탐색중 가장 빠릅니다.
(물론, O(1)의 Hash 탐색을 제외!!)
(Wikipedia 인용)
트리의 구현은 다양한 방법이 있지만 배열(Array)을 사용하는 것이 가장 편리합니다~(아무래도 익숙하니깐)
하지만 여기서는 포인터를 사용해봤습니다, 아무래도 메모리도 동적이구..
실제로 구현만 해놓으면 배열보다는 편리하기 때문입니다.
일단 기본 소스는 다음과 같구 이걸 구조적으로 분석해서 포스팅하겠습니다.
'Development > Informatics' 카테고리의 다른 글
[KOI]두부 모판 자르기(bean curd) (0) | 2016.10.13 |
---|