선형 검색 (Linear Search)

2023. 10. 10. 09:05알고리즘

| 선형 검색 - Linear Search

선형 검색은 주로 문자열이 주어지고 해당 문자열이 포함된 값이 있는지 확인 할 때 사용한다.

예를 들어 유저의 아이디는 unique 값이다.

즉 다른 유저가 jihoo 라는 아이디를 사용하면 나는 jihoo를 사용하지 못한다.

가장 좋은 방법은 개별 항목을 하나씩 확인하며 값을 찾으면 그 값을 뱉어주게 하는것이다.

검색 방법 중에서 가장 단순하며 구현이 쉽다. 또한 정렬되지 않은 리스트에서도 사용이 가능하다.

 

| 내장 함수 없이 선형 검색 구현

- 인자로 넘어온 numArr 안에 value의 값이 있는지 확인

 

 

동일한 기능을 하는 내장함수들을 JS에서는 지원한다.

 

| 내장 함수 (indexOf / includes ... )

- indexOf

indexOf는 값을 하나 하나 비교해가며 해당 값이 존재하면 해당 값의 index를 반환한다.

- includes

includes는 해당 값이 존재하면 true 그렇지 않으면 false 를 뱉는다.

 

| 선형 검색의 문제점

일단 시간복잡도가 O(n) 이다.

배열의 길이가 늘어나면 시간 복잡도 또한 증가한다.

비교해야 할 대상이 늘어나면 연산 해야 할 대상 또한 증가한다.

 

만약 배열의 0번째 index를 내가 찾고자 한다면 상수시간 O(1) 처럼 동작 할 것이다.

배열에 1 부터 50000 까지 담고있을 때 50000을 찾으려면 1부터 50000까지 비교를 진행한다.

그리고 만약 비교할 값이 배열에 담겨져 있지 않으면 50000번을 비교한 이후 -1 또는 false를 반환할 것이다.

 

시간복잡도 측면에서는 이진 검색 (Binary Search) 가 더 효율적이다.

이진 검색은 다음번에 더 자세하게 다뤄보도록 하겠다.

'알고리즘' 카테고리의 다른 글

해시 [Hash]  (1) 2023.12.12
버블 정렬 (Bubble Sort)  (1) 2023.11.09
이진 검색 (Binary Search)  (1) 2023.10.11
재귀함수 (recursion)  (0) 2023.10.09
빅오 표기법 (big O notation)  (0) 2023.09.13