Algorithm (Python, Java, SQL)/Inflearn Study

[Python Algorithm] 병합정렬 (Divide and Conquer)

sanadoing_ 2023. 4. 27. 16:36
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