4. Devide & Conquer
여기서는 간략하게 개념만 설명하고 넘어가겠습니다.
분할 정복 알고리즘의 예시로는 이진 탐색 트리
그리고 정렬 알고리즘으로 넘어가면 퀵 정렬과 병합 정렬이 대표적인 예가 될 수 있습니다.
이 알고리즘은 주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리하며,
링크드 리스트나 트리가 대상이 될 수도 있습니다.
이진 탐색 트리 를 보면 선형탐색으로 O(n) 의 시간을 들여 찾는 것 보다
절반으로 나누어 찾아가면 O(log n) 로 훨씬 더 효율적으로 찾는 것을 알 수 있습니다.
이렇게 몇몇 케이스에서 분할 정복 패턴을 사용하면 더 효율적인 결과를 얻을 수 있습니다.
function search(array, val) {
let min = 0;
let max = array.length - 1;
while (min <= max) {
let middle = Math.floor((min + max) / 2);
let currentElement = array[middle];
if (array[middle] < val) {
min = middle + 1;
}
else if (array[middle] > val) {
max = middle - 1;
}
else {
return middle;
}
}
return -1;
}
지난 관련글
1. Frequency Counter (빈도수 세기)
https://daunje0.tistory.com/190
[Algorithm] 알고리즘 기본 패턴 1 - Frequency Counter (빈도수 세기)
Frequency Counter (빈도수 세기) 배열/ 문자열의 요소들의 빈도수를 비교할 때 사용하며이 패턴은 Object 또는 Set을 사용하여 값의 값/빈도를 수집합니다중첩 루프 또는 O(N^2) 중첩 루프를 O(n)으로 최
daunje0.tistory.com
2. Multiple Pointers (다중 포인터)
https://daunje0.tistory.com/191
[Algorithm] 알고리즘 기본 패턴 2 - Multiple Pointers (다중 포인터)
1. 개념 배열이나 문자열에서 한 쌍의 값이나 조건을 찾을 때 사용인덱스 또는 위치에 해당하는 포인터 또는 값을 생성하고 특정 조건에 따라 시작, 끝 또는 중간으로 이동합니
daunje0.tistory.com
3. Sliding Window
https://daunje0.tistory.com/262
[Algorithm] 알고리즘 기본 패턴 3 - Sliding Window
3. Sliding Window 배열이나 문자열과 같은 일련의 데이터를 입력하거나 특정 방식으로 연속적인 해당 데이터의 하위 집합을 찾는 경우에 유용합니다. 창문을 하나 만들어야 합니다. 여기서
daunje0.tistory.com
'JavaScript > Algorithm' 카테고리의 다른 글
[Algorithm] 5. 이진 탐색(Binary Search) 알고리즘 (0) | 2025.01.20 |
---|---|
[Algorithm] 알고리즘 기본 패턴 3 - Sliding Window (0) | 2025.01.12 |
[프로그래머스] Lv1) 숫자 짝꿍 (0) | 2024.12.22 |
[Algorithm] 알고리즘 기본 패턴 2 - Multiple Pointers (다중 포인터) (0) | 2024.10.31 |
[Algorithm] 알고리즘 기본 패턴 1 - Frequency Counter (빈도수 세기) (0) | 2024.10.31 |