def split_func(data):
medium = int(len(data) / 2)
print (medium)
left = data[:medium]
right = data[medium:]
print (left, right)
split_func([1, 5, 3, 2, 4])
실행결과
2 [1, 5] [3, 2, 4]
다음 문장을 코드로 작성해보자.(merge함수는 있다고만 가정)
def mergesplit(data):
if len(data) <= 1:
return data
left = mergesplit(data[:medium])
right = mergesplit(data[medium:])
return merge(left, right)
def merge(left, right):
merged = list()
left_index, right_index = 0, 0
#case1 left, right 둘 다 있을 때
while left_index < len(left) and right_index < len(right):
if left[left_index] < right[right_index]:
merged.append(left[left_index])
left_index += 1
else:
merged.append(right[right_index])
right_index += 1
#case2 left 데이터가 없을 때
while left_index < len(left):
merged.append(left[left_index])
left_index += 1
#case3 right 데이터가 없을 때
while left_index < len(left):
merged.append(right[right_index])
right_index += 1
return merged
def mergesplit(data):
if len(data) <= 1:
return data
left = mergesplit(data[:medium])
right = mergesplit(data[medium:])
return merge(left, right)
실행결과
[8, 12, 24, 40, 47, 70, 81, 87, 92, 96]