728x90
import sys
input = sys.stdin.readline
def Dsort(lt, rt):
if lt<rt:
mid = (lt+rt)//2
Dsort(lt, mid)
Dsort(mid+1, rt)
p1 = lt
p2 = mid+1
tmp = []
while p1<=mid and p2<=rt:
if arr[p1]<arr[p2]:
tmp.append(arr[p1])
p1+=1
else:
tmp.append(arr[p2])
p2+=1
if p1<=mid:
tmp = tmp + arr[p1:mid+1]
if p2<=rt:
tmp = tmp + arr[p2:rt+1]
for i in range(len(tmp)):
arr[lt+i] = tmp[i]
arr = [23, 11, 45, 36, 15, 67, 33, 21]
print("Before sort : ", end='')
print(arr)
Dsort(0,7)
print()
print("After sort : ", end='')
print(arr)
⭐️ Point ! ⭐️
- 두 영역을 나눔 -> 본연의 일 수행 !

출처
- 인프런 : 파이썬 알고리즘 문제 풀이
728x90
'Algorithm (Python, Java, SQL) > Inflearn Study' 카테고리의 다른 글
[Python Algorithm] Dynamic programming(동적계획법) - 네트워크 선 자르기(Bottom-Up) (0) | 2023.06.02 |
---|---|
[Python Algorithm] 퀵 정렬 (0) | 2023.04.27 |
[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 피자 배달 거리(DFS) (0) | 2023.04.27 |
[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 사다리 타기(DFS) (0) | 2023.04.27 |
[Python Algorithm] 깊이/넓이 우선탐색(DFS, BFS) - 토마토(BFS 활용) (0) | 2023.04.26 |