Problem Solving/Algorithm
[알고리즘] 순차 탐색
se0m
2021. 6. 2. 21:04
순차 탐색(Sequential Search)
리스트의 처음부터 끝까지 차례대로 탐색하면서 원하는 데이터를 찾는 가장 기본적인 알고리즘입니다.
(탐색: 여러 데이터 중에서 원하는 데이터를 찾아내는 것)
순차 탐색 알고리즘 동작 방식
- 첫 번째 원소부터 탐색 시작
- 현재 원소가 찾고자 하는 값과 같은지 비교
- 같으면 해당 인덱스를 반환
- 끝까지 탐색해도 없으면 -1 반환
순차 탐색의 시간 복잡도
- 최선의 경우: `O(1)` (첫 번째 요소가 찾는 값일 때)
- 최악의 경우: `O(n)` (리스트 끝까지 탐색)
- 평균적인 경우: `O(n)`
프로그래밍 연습
임의 리스트가 다음과 같이 `randDataList`로 있을 때
원하는 데이터의 위치를 리턴하는 순차 탐색 알고리즘 작성해 보기
(원하는 데이터가 없을 경우 `-1` 리턴)
import java.util.*;
public class SequentialSearchExample {
// 순차 탐색 메서드
public static int sequentialSearch(List<Integer> dataList, int searchData) {
for (int i = 0; i < dataList.size(); i++) {
if (dataList.get(i) == searchData) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
// 무작위 데이터 생성
Random rand = new Random();
List<Integer> randDataList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
randDataList.add(rand.nextInt(100) + 1); // 1 ~ 100
}
System.out.println("데이터: " + randDataList);
// 검색할 데이터 지정 (예: 3번째 인덱스 값)
int target = randDataList.get(3);
int result = sequentialSearch(randDataList, target);
System.out.println(target + "의 인덱스 위치: " + result);
}
}
순차 탐색 정리
항목 | 내용 |
알고리즘 이름 | 순차 탐색 (Sequential Search) |
동작 방식 | 앞에서부터 하나씩 차례로 검사 |
조건 | 정렬 필요 없음 |
시간 복잡도 | O(n) |
장점 | 단순하고 구현이 쉬움 |
단점 | 데이터가 많을수록 느려짐 |
정렬이 되어 있지 않거나, 리스트가 작을 때는 유용하지만
데이터가 많다면 이진 탐색 등 더 효율적인 알고리즘이 필요합니다.