728x90
# merge sort
array = [6,5,3,1,8,7,2,4]
def merge_sort(array):
if len(array) < 2: # 원소가 하나인 경우
return array
merged_array = []
mid = len(array)//2
left_array = merge_sort(array[:mid])
right_array = merge_sort(array[mid:])
l = r = 0
while l < len(left_array) and r < len(right_array):
# 여기서는 작은 수 부터 정렬
if left_array[l] < right_array[r]:
merged_array.append(left_array[l])
l += 1
else:
merged_array.append(right_array[r])
r += 1
merged_array += left_array[l:]
merged_array += right_array[r:]
return merged_array
print(array)
result = merge_sort(array)
print(result)
728x90
'Algorithm (PS)' 카테고리의 다른 글
백준 1244 스위치 켜고 끄기 / 구현 (0) | 2022.09.18 |
---|---|
[백준] 2212 센서 Python 그리디 풀이 (0) | 2022.09.18 |
[LeetCode] fibonacci 수열의 다양한 풀이 (0) | 2022.09.14 |
[leetcode] Longest Palindromic Substring / 투포인터 (0) | 2022.09.12 |
프로그래머스 단어변환 & 백준 1963 소수경로 (DFS/BFS) 유사문제 정리 (0) | 2022.09.11 |