1. Algorithms
1.1. 기초
-
- 정의, 복잡도 분석, 시간 복잡도(Time Complexity), 프로시저
-
01_Data Structures & Algorithms
- ADT, 복잡도 분석 예시
1.2. 분석 도구
-
02_Growth of Functions & Asymptotics
- 점근 표기법, T(n)
-
- 점화식
1.3. 심화 주제
2. Linear Data Structures
| 자료구조 | 탐색 | 삽입 | 삭제 |
|---|---|---|---|
| Unsorted Array | O(n) | O(1) (끝) | O(n) |
| Sorted Array | O(log n) | O(n) | O(n) |
| 연결리스트 | O(n) | O(1) | O(1)* |
| 스택/큐 | O(n) | O(1) | O(1) |
2.1. Arrays & Linked Lists
-
- C 배열: 08_Arrays & Strings
- C 구조체: 17_struct, union, enum
- 자료구조 배열
- 응용: 희소 행렬, 다항식
-
- C 포인터/동적 할당
- 연결 구조: 05_Pointer & Linked Structure
- 배열 리스트
- 단순 연결 리스트
- 이중 연결 리스트
2.2. Queues & Stacks
-
-
선입선출; FIFO(First-In First-Out)
-
삽입/삭제 , 탐색
-
선형 큐, 원형 큐, 덱(Deque)
-
응용: BFS/DFS 피보나치, 미로 탐색
-
-
-
후입선출; LIFO(Last-In First-Out)
-
삽입/삭제 , 탐색
-
배열/구조체 스택
-
응용: 괄호 검사, 후위 표기식 계산, 시스템 스택, 재귀 호출
-
2. Non-linear Data Structures
2.1. Graph
- 그래프의 정의: 07_Graph (이산수학)
- 그래프의 표현: 08_Graph (자료구조)
- Graph Algorithms
- Graph Traversal Algorithms
- BFS (Breadth-First Search), 인접 리스트
- DFS (Depth-First Search), 인접 리스트
- MST Algorithms
- Kruskal’s Algorithm,
- Prim’s Algorithm, 우선순위 큐
- SSSP (Single-Source Shortest Path Algorithms)
- (음수 가중치 X) Dijkstra’s Algorithm, 우선순위 큐
- (음수 가중치 O) Bellman-Ford Algorithm,
- APSP (All-Pairs Shortest Path Algorithms)
- Graph Traversal Algorithms
2.2. Tree
| 자료구조 | Search | Insert/Delete | 특징 |
|---|---|---|---|
| Tree | (위치 탐색) | - | |
| Binary Tree | (위치 탐색) | 자식 최대 2개, 다양한 순회 방법 | |
| Heap | 완전 이진 트리, 최대/최소값 빠른 접근 | ||
| BST | 유일키, , 정렬된 탐색 | ||
| Skewed BST | 연결 리스트와 유사해짐 | ||
| Balanced BST | - |
- 트리의 정의: 08_Tree (이산수학) (트리, 이진 트리, 힙 트리, BST, BBST)
- 이진 힙 트리를 활용한 우선순위 큐
- 트리의 구현: 07_Tree (자료구조) (표현, 연산, Traversal)
- AVL 트리: 06_BST & AVL Trees (BST 연산, AVL 상세)
3. Sort & Search
3.1. Sort
| 정렬 | 최선 | 평균 | 최악 | 안정 | 제자리 | 특징 |
|---|---|---|---|---|---|---|
| 선택 | 불안정 | ✅ | - | |||
| 삽입 | ✅ | ✅ | - | |||
| 버블 | ✅ | ✅ | - | |||
| 퀵 | 불안정 | ✅ | D&C(pivot) | |||
| 힙 | 불안정 | ✅ | - | |||
| 병합 | ✅ | 외부() | D&C | |||
| 계수 | - | - | - | - | - | - |
| 기수 | - | - | - | - | - | - |
-
비교 정렬 -
- 선택 정렬
- 삽입 정렬 (Insertion Sort)
- 버블 정렬
-
비교 정렬 -
-
비비교 정렬 -
3.2. Search
-
Comparison-based Search
- Linear Search (선형 탐색, 순차 탐색): 비정렬 원소,
- Binary Search (이진 탐색): 기정렬 원소,
- Interpolation Search
-
Hash-based Search
- Hashing: 탐색 및 삽입/삭제의 평균 , 최악