알고리즘/개념
[알고리즘] Binary Search란?
Codingbit
2018. 8. 22. 00:00
* 이름이 붙여진 것처럼 Search하는 알고리즘인데, binary의 방법으로 진행한다.
=>binary 방법이라는 것은 하나의 배열을 반으로 나누어서, 둘 중 한쪽을 선택하고, 또 반으로 나누고를 반복하는 방식이다.
* 전제 조건
=> 정렬되어 있어야 한다.
* 과정
=> 정렬이 되어있다는 전제하에 진행한다.
(실제로 정렬이 되어있지 않다면, 정렬 후 진행해야 한다.)
1. 숫자 n을 찾는다고 가정 하였을 때, 중간 값 middle을 정한다.
2. middle보다 n이 크다면, middle보다 큰 쪽을 본다.
3. middle보다 큰 쪽에서 1과 2를 반복적으로 진행하여, 숫자를 찾는다.
* 애니메이션
http://www.cs.armstrong.edu/liang/animation/web/BinarySearch.html :
* 시간 복잡도
숫자를 절반씩 지워나가면서 찾는다라는 것을 명심해보자.
그렇다는 것은 log n과 동일하다고 할 수 있다.
O(log n)!!!!!
ex) 1024개의 정렬된 배열이 존재할 때, binary search를 이용하면, 대략 10번이내에 찾을 수 있다.
* binary search의 효율성
-> 이미 배열이 정렬되어 있다면 binary search가 효율적임.
-> 숫자찾기를 엄청 많이 해야하는 경우에는 오히려 정렬을 한 뒤에 binary search를 하는 것이 좋다.
ex) 숫자가 100개가 있는데, 숫자 찾기를 1만번해야하는 경우...