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 |
Tags
- 내란수괴 윤석열
- ccw
- 다익스트라
- 알고리즘
- 윤석열
- 이분 탐색
- dfs 백트래킹
- 구조론
- 내란죄
- dfs
- 프림
- 오블완
- 파비우스 전략
- LCA
- 재귀함수
- 민주주의
- 유니온 파인드
- Python
- union find
- 티스토리챌린지
- 내란수괴
- 윤석열 내란수괴
- 투 포인터
- 왈왈왈
- BFS
- DP
- 백준
- 비상계엄
- Prim
- 분할정복
Archives
- Today
- Total
Toolofv 님의 블로그
[Python] 병합 정렬(Merge Sort) 본문
정렬 알고리즘은 사실 실제로 구현해서 사용할 일은 없는 것 같다. 매일 잊어먹기 때문에 기록의 용도로 올린다. 병합 정렬(Merge Sort)의 시간복잡도는 최악의 경우부터 최선의 경우 모두 $O(n\ log\ n)$이고, 공간복잡도는 $O(n)$이다. 배열의 크기에 비례하는 공간이 필요하다.
병합 정렬(Merge Sort)
병합 정렬은 배열을 재귀함수로 계속 분할하고 끝에서부터 병합하면서 정렬이 되는 구조다. 타고타고 병합이 완료되면서 정렬된다.


- 코드
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
d = [1, 6, 8, 2, 9, 3, 7, 5, 4]
def merge_sort(d):
if len(d) < 2:
return d
mid = len(d)//2
l = merge_sort(d[:mid])
r = merge_sort(d[mid:])
i, j = 0, 0
res = []
while True:
if i >= len(l) or j >= len(r):
break
if l[i] <= r[j]:
res.append(l[i])
i += 1
else:
res.append(r[j])
j += 1
if l[i:]:
res.extend(l[i:])
if r[j:]:
res.extend(r[j:])
return res
print(merge_sort(d))
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
d = [1, 6, 8, 2, 9, 3, 7, 5, 4]
def merge_sort(d):
if len(d) < 2:
return d
mid = len(d)//2
l = merge_sort(d[:mid])
r = merge_sort(d[mid:])
return merge(l, r)
def merge(l, r):
if len(l) == 0 or len(r) == 0:
return l or r
i, j = 0, 0
res = []
while True:
if i >= len(l) or j >= len(r):
break
if l[i] <= r[j]:
res.append(l[i])
i += 1
else:
res.append(r[j])
j += 1
if l[i:]:
res.extend(l[i:])
if r[j:]:
res.extend(r[j:])
return res
print(merge_sort(d))
[Python] 퀵 정렬(Quick Sort)
퀵 정렬(Quick Sort)은 병합 정렬(Merge Sort)와 비슷하게 분할정복(Divide and Conqueror)의 방법으로 정렬되는 알고리즘이다. 퀵 정렬은 시간복잡도로는 복불복이다. 최선, 평균의 경우 $O(n\ log\ n)$이지만
toolofv.tistory.com
[Python] 힙 정렬(Heap Sort)
힙(Heap) 정렬 알고리즘은 정렬의 용도로 주로 쓰인다고 볼 수는 없는 것 같다. 힙 자료구조는 원소가 들어갈 때 최댓값, 최소값을 꺼내쓰는데 효율적이기 때문에 다익스트라(dijkstra) 알고리즘같
toolofv.tistory.com
반응형
'Algorithm' 카테고리의 다른 글
| GPT로 만든 문제- 수열에서 자신보다 작지 않은 수들의 구간 찾기 (0) | 2025.06.26 |
|---|---|
| [Python] 퀵 정렬(Quick Sort) (0) | 2025.01.31 |
| [Python] 힙 정렬(Heap Sort) (0) | 2025.01.28 |
| [Python] 백준 - 2583 영역 구하기 (0) | 2025.01.26 |
| [Python] 백준 - 2573 빙산 (1) | 2024.12.27 |