본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Algorithm

JavaScript 자료구조 구현 전체 지도

추가
목차3개 항목
출처와 참고

Oleksii Trekhleb의 공개 저장소 「JavaScript Algorithms and Data Structures」를 주제별로 재구성한 노트다.

무엇을 배우는가

자료구조는 데이터를 저장하는 방식과 연산의 비용을 함께 고르는 선택이다. 배열은 인덱스로 접근하기 쉽고, 해시 테이블은 평균 조회 성능을 목표로 하며, 균형 트리는 정렬된 순서의 탐색을 지원한다. 같은 동작도 값의 개수·접근 패턴·메모리 제약에 따라 최적 구조가 달라진다.

저장소의 자료구조 전체 항목

항목수준핵심 개념코드·설명
Linked List기초다음 노드 참조로 연결해 삽입 위치가 알려진 경우 연결 비용을 줄인다원본
Doubly Linked List기초이전·다음 참조를 유지해 양방향 이동과 노드 제거를 쉽게 한다원본
Queue기초FIFO 순서로 요청을 처리한다원본
Stack기초LIFO 구조로 되돌리기·재귀 호출 흐름을 다룬다원본
Deque기초양쪽 끝에서 삽입과 제거를 수행한다원본
Hash Table기초해시값으로 키를 배치해 평균 상수 시간 조회를 목표로 한다원본
Heap기초완전 이진 트리의 대소 관계를 유지해 우선 항목을 찾는다원본
Priority Queue기초우선순위가 가장 높은 원소를 먼저 처리하는 추상 자료형이다원본
Trie심화문자열 공통 접두사를 공유해 저장·탐색한다원본
Tree심화계층적인 부모·자식 관계를 표현한다원본
Binary Search Tree심화왼쪽이 작고 오른쪽이 큰 비교 규칙으로 값을 탐색한다원본
AVL Tree심화높이 균형을 회전으로 복구한다원본
Red-Black Tree심화색 제약으로 트리 높이를 제한한다원본
Segment Tree심화구간 집계와 점 갱신·구간 갱신을 처리한다원본
Fenwick Tree심화누적 합과 점 갱신을 간결한 비트 구조로 처리한다원본
Graph심화정점과 간선으로 관계·경로·연결성을 표현한다원본
Disjoint Set심화집합의 대표를 관리해 연결 요소를 빠르게 합친다원본
Bloom Filter심화비트 배열로 존재 가능성을 빠르게 검사하며 거짓 양성이 생길 수 있다원본
LRU Cache심화오랫동안 쓰지 않은 캐시 항목부터 제거한다원본

선택 기준과 대표 복잡도

구조선택하기 좋은 상황주의할 점
연결 리스트중간 노드를 이미 알고 자주 삽입·제거임의 인덱스 접근 O(n)
스택·큐·덱처리 순서가 중요한 경우내부 구현에 따라 연산 비용이 다름
해시 테이블키 기반 동등 비교 조회평균 O(1) 목표, 충돌과 최악 비용 고려
균형 이진 탐색 트리정렬 상태와 범위 질의 유지회전·균형 제약 유지 비용
세그먼트·펜윅 트리업데이트가 있는 구간 집계O(log n) 연산과 인덱스 주의
Bloom Filter메모리를 아끼며 존재 가능성 탐색거짓 양성 가능, 일반 구현에서 삭제에 제약
LRU 캐시용량 초과 시 오래 안 쓴 항목 제거해시맵과 이중 연결 리스트 결합이 일반적

관련 노트: 기초 자료구조, 해시 테이블, 트리, 세그먼트 트리, 서로소 집합

원본 기록2

댓글

GitHub 계정으로 댓글을 남길 수 있어요.