반응형
탐색 알고리즘이란
탐색 알고리즘은 주어진 데이터 집합에서 특정 항목을 찾는 방법
01 선형 탐색(Linear Search)
처음부터 끝까지 하나씩 비교하면서 찾는 방식
int LinearSearch(int[] arr, int target)
{
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == target) return i;
}
return -1;
}
시간복잡도
최악 : O(N)
최선 : O(1)
02 이진 탐색(Bineary Search)
정렬된 배열에서 중간값과 빅하며 절반씩 범위 줄이기
조건 : 오름차순 or 내린차순으로 정렬된 데이터여야 한다.
int BinarySearch(int[] arr, int target)
{
int left = 0, right = arr.Length - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
시간복잡도
O(logn)
03 해시 탐색(Hashing)
키(key)를 해시함수로 변환해서 바로 인덱스로 접근
Dictionary<string, Item> itemMap = new();
itemMap["sword"];
시간복잡도
평균 : O(1)
최악(충돌 발생시) : O(N)
반응형
'코딩테스트 준비 > 자료구조 & 알고리즘' 카테고리의 다른 글
최단 경로 알고리즘 총 정리(다익스트라,벨만-포드 알고리즘,A*알고리즘) (0) | 2025.04.17 |
---|---|
시간복잡도(빅오표기법)을 왜 알아야할까? (0) | 2025.04.09 |
C# - 이진 탐색 트리(Binary Search Tree) (0) | 2024.06.11 |
C# - 배열을 문자열로 바꾸는 방법 (0) | 2024.04.08 |
알고리즘 - 그리디(Greedy) 알고리즘 (1) | 2024.03.26 |
댓글