def merge(list1, list2):
i = 0
j = 0
merged_list = [] -> 합병된 리스트를 정의
while i < len(list1) and j < len(list2):
if list[i] < list[j]:
merged_list.append(list1[i])
i += 1
elif list[i] > list[j]:
merged_list.append(list2[j])
j += 1
리스트에 넣어준 후 나머지 값들을 리스트에 추가해
if i == len(list1):
merged_list += list2[j:]
elif j == lend(list2):
merged_list += list1[i:]
return merged_list
left_half = my_list[:len(my_list)//2]
right_half = my_list[len(my_list)//2:]
return merge(merge_sort(left_half), merge_sort(right_half))
def merge(list1, list2):
i = 0
j = 0
merged_list = [] -> 합병된 리스트를 정의
while i < len(list1) and j < len(list2):
if list[i] < list[j]:
merged_list.append(list1[i])
i += 1
elif list[i] > list[j]:
merged_list.append(list2[j])
j += 1
리스트에 넣어준 후 나머지 값들을 리스트에 추가해
if i == len(list1):
merged_list += list2[j:]
elif j == lend(list2):
merged_list += list1[i:]
return merged_list
def merge_sort(my_list):
if len(my_list) < 1: -> base case 리스트의 값이 1개 혹은 0일때 바로 나옴
return my_list
left_half = my_list[:len(my_list)] -> divide 과정
right_half = my_list[len(my_list):]
return merge(merge_sort(left_half), merge_sort(right_half)) - > conquer, combine 과정
출처 - codeit(알고리즘)