-
알고리즘, Search, Linear SearchData Structure & Algorithm 2024. 6. 16. 21:52
선형 검색(Linear Search)은 가장 간단한 검색 알고리즘 중 하나로, 배열이나 리스트와 같은 데이터 구조에서 특정 요소를 찾기 위해 처음부터 끝까지 순차적으로 요소를 하나씩 비교하는 방식입니다. 선형 검색은 구현이 매우 간단하지만, 효율성이 떨어지기 때문에 작은 데이터셋에서 주로 사용됩니다.
기본 개념
선형 검색의 기본 개념은 다음과 같습니다:
- 순차적으로 비교: 리스트의 첫 번째 요소부터 마지막 요소까지 순차적으로 비교합니다.
- 일치하는 요소 찾기: 검색하려는 요소와 일치하는 요소를 찾으면 해당 요소의 인덱스를 반환합니다.
- 일치하는 요소가 없는 경우: 리스트의 모든 요소를 비교한 후에도 검색하려는 요소를 찾지 못하면 -1을 반환합니다.
예제
다음은 자바스크립트로 구현한 선형 검색의 예제입니다.
function linearSearch(arr, target) { for (let i = 0; i < arr.length; i++) { if (arr[i] === target) { return i; // 요소를 찾으면 인덱스를 반환 } } return -1; // 요소를 찾지 못하면 -1 반환 } let arr = [5, 3, 8, 4, 2]; console.log(linearSearch(arr, 8)); // 2 console.log(linearSearch(arr, 7)); // -1
시간 복잡도
선형 검색의 시간 복잡도는 다음과 같습니다:
- 최악의 경우 시간 복잡도: O(n)
- 리스트의 모든 요소를 비교해야 하는 경우입니다.
- 평균 시간 복잡도: O(n)
- 최선의 경우 시간 복잡도: O(1)
- 검색하려는 요소가 리스트의 첫 번째 요소인 경우입니다.
특징
- 단순함: 선형 검색은 구현이 매우 간단합니다.
- 비교 기반 검색(Comparison Search): 요소들을 하나씩 비교하여 검색합니다.
- 정렬 여부와 무관: 리스트가 정렬되어 있지 않아도 검색이 가능합니다.
- 제자리 검색(In-place Search): 추가적인 메모리 공간을 사용하지 않습니다.
장점
- 간단하고 직관적: 구현이 쉽고 직관적입니다.
- 정렬 필요 없음: 리스트가 정렬되어 있지 않아도 사용할 수 있습니다.
- 작은 데이터셋에 유용: 작은 데이터셋에 대해서는 효율적입니다.
단점
- 비효율성: 큰 데이터셋에 대해서는 비효율적이며, 시간이 많이 걸릴 수 있습니다.
- 시간 복잡도: 시간 복잡도가 O(n)으로, 요소의 수가 많아질수록 검색 시간이 선형적으로 증가합니다.
결론
선형 검색은 간단하고 구현이 쉬운 검색 알고리즘으로, 작은 데이터셋이나 정렬되지 않은 리스트에 유용하게 사용할 수 있습니다. 그러나, 큰 데이터셋에 대해서는 효율성이 떨어지므로, 이진 검색(Binary Search)과 같은 더 효율적인 검색 알고리즘을 사용하는 것이 좋습니다. 이진 검색은 리스트가 정렬되어 있는 경우에 사용할 수 있으며, 시간 복잡도가 O(log n)으로 훨씬 효율적입니다.
'Data Structure & Algorithm' 카테고리의 다른 글
알고리즘, Search, Binary Search (1) 2024.06.16 알고리즘, Search, Naive String Search (1) 2024.06.16 알고리즘, 문제해결패턴, Recursion (1) 2024.06.13 알고리즘, 문제해결패턴, Divide and Conquer (0) 2024.06.12 알고리즘, 문제 해결 패턴, Sliding Window (1) 2024.06.12