0
병합 정렬을 개발합니다. 반복자 (iterator) 만 사용할 수 있습니다 (문제 진술). 내 함수의 출력은 생성자입니다.도움말을 사용하여 병합 정렬 반복자
def merge_sort(data):
data1, data2 = itertools.tee(data)
counter = 0
for i in data1:
counter += 1
if counter < 2:
return data2
middle = int(counter/2)
y = itertools.islice(data2, 0, middle)
z = itertools.islice(data2, middle, counter)
sorted_y = merge_sort(y)
sorted_z = merge_sort(z)
return heapq.merge(sorted_y, sorted_z)
내 기능을 테스트 :
def main():
unsorted_list = [10, 3, 5, 0, 1, -5, 6, 2]
result = merge_sort(iter(unsorted_list))
for i in result:
print(i)
그러나 그것은 작동하지 않습니다
나는 정렬 기능을 병합 물품. 나는 단지 10 번을 얻는다. 나는 실수를 어디에서 했는가?