더북(TheBook)

메서드는 두 인수를 받는다. array는 검색할 정렬된 배열이고 search_value는 찾으려는 값이다.

예로 든 배열에서 22를 찾으려면 위 함수를 다음과 같이 호출한다.

p linear_search([3, 17, 75, 80, 202], 22)

보다시피 linear_search 메서드는 배열의 모든 원소를 순회하며 search_value를 찾는다. 순회하던 elementsearch_value보다 크면 배열에 search_value가 없다는 뜻이므로 검색을 중단한다.

이러한 관점에서 보면 선형 검색은 특정 상황에서 전형적인 배열보다 정렬된 배열에서 단계 수가 더 적게 걸린다. 하지만 찾으려는 값이 배열의 마지막 값이거나 마지막 값보다 크면 마찬가지로 모든 셀을 검색해야 검색이 끝난다.

언뜻 보면 일반적인 배열과 정렬된 배열이 효율성 면에서 대단한 차이가 없어 보이고 적어도 최악의 시나리오에서는 그렇다. 두 배열 유형 모두 원소가 N개이면 선형 검색에 최대 N단계가 걸린다.

하지만 선형 검색보다 훨씬 뛰어난 아주 강력한 알고리즘이 이제 곧 나타난다.

지금까지는 정렬된 배열에서 값을 찾는 유일한 방법이 선형 검색이라고 가정했다. 하지만 사실 선형 검색은 값을 검색하는 알고리즘 중 하나일 뿐이다. 사용할 수 있는 유일한 알고리즘이 아니다.

정렬된 배열이 전형적인 배열보다 크게 두드러진 장점은 다른 검색 알고리즘을 쓸 수 있다는 점이다. 이러한 알고리즘을 이진 검색(binary search)이라 부르며, 이진 검색은 선형 검색보다 훨씬 빠르다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.