반응형
NUM = int(input())
A = list(map(int, input().split()))
def MergeSort(A): #1
if len(A) < 2 :
return A
else :
mid = len(A)//2
left = A[:mid]
right = A[mid:]
l = MergeSort(left)
r = MergeSort(right)
return Merge(l, r)
def Merge(left, right) : #2
i = 0
j = 0
B = []
while (i<len(left)) & (j<len(right)) :
if left[i] < right[j] :
B.append(left[i])
i += 1
else :
B.append(right[j])
j += 1
while (i<len(left)) :
B.append(left[i])
i += 1
while (j<len(right)) :
B.append(right[j])
j += 1
return B
print(MergeSort(A))
#1 : MergeSort를 재귀하여 1개의 데이터가 있을 때까지 분리
#2 : 1개씩 분리한 데이터들을 비교하여 B라는 리스트에 새로 넣어 정렬
반응형
'알고리즘 > 알고리즘 학습' 카테고리의 다른 글
순차탐색(Sequence Search) 알고리즘 (0) | 2020.08.11 |
---|---|
1부터 n 까지 연속한 숫자의 합을 구하는 알고리즘 (0) | 2020.08.10 |
알고리즘 회문(Palindrome) 파이썬 뒤집어 더하기 (2) | 2020.01.22 |
파이썬(Python) 소수구하기 소스 코드 (0) | 2020.01.17 |
선택정렬 파이썬(Python) (0) | 2020.01.16 |
[알고리즘] 해시 테이블(Hash Table) (0) | 2019.06.05 |
2019 CNUPC 전북대학교 프로그래밍 대회 문제 - 택시 거리(C++) (0) | 2019.05.25 |
2019 CNUPC 전북대학교 프로그래밍 대회 문제 - 키보드 이벤트(C++) (0) | 2019.05.23 |
최근댓글