Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- /etc/network/interfaces
- 서버설정
- d
- baeldung
- network configuration
- 페이징
- 친절한SQL튜닝
- 처음 만나는 AI 수학 with Python
- 자료구조와함께배우는알고리즘입문
- Kernighan의 C언어 프로그래밍
- 코드로배우는스프링부트웹프로젝트
- 구멍가게코딩단
- 티스토리 쿠키 삭제
- 선형대수
- GIT
- iterator
- ㅒ
- 이터레이터
- 스프링부트핵심가이드
- 목록처리
- 스프링 시큐리티
- 처음 만나는 AI수학 with Python
- 데비안
- 네트워크 설정
- 자료구조와 함께 배우는 알고리즘 입문
- 코드로배우는스프링웹프로젝트
- 리눅스
- 알파회계
- 자바편
- resttemplate
Archives
- Today
- Total
bright jazz music
분할 정복 (Divide and Conquer) 본문
Algorithm&Data structure/패턴 및 접근법(JS)
분할 정복 (Divide and Conquer)
bright jazz music 2024. 11. 23. 20:23-데이터 셋을 작은 부분으로 나누고 해결을 반복한다. 이러한 방법을 사용하면 시간복잡도가 크게 감소한다.
-정렬, 탐색 등 많은 다른 알고리즘에서 사용된다.
- 주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리한다.
예시: 배열에서 특정 값을 찾는 경우. 선형탐색으로 찾을 수도 있지만 아래처럼 이진탐색 할 수도 있다.
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;
}
'Algorithm&Data structure > 패턴 및 접근법(JS)' 카테고리의 다른 글
문자열에서 문자열 패턴 찾기 (0) | 2024.12.02 |
---|---|
슬라이딩 윈도우 (0) | 2024.11.23 |
다중 포인터 패턴 (0) | 2024.11.23 |
빈도수 세기 패턴(객체를 활용한 카운팅) (0) | 2024.11.23 |
Comments