def merge_sort(num):
import math
if(len(num) < 2):
return num
middle = int(math.floor(len(num)/2))
left, right = num[0:middle], num[middle:]
return merge(merge_sort(left), merge_sort(right))
def merge(left, right):
result = []
while left and right:
if left[0] <= right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
while left:
result.append(left.pop(0))
while right:
result.append(right.pop(0))
return result
if __name__ == '__main__':
num = [1, 9, 8, 2, 5, 3, 4, 7, 0, 6]
print num
result = merge_sort(num)
print result
歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.