def merge_sort(nums):
if len(nums) == 1:
return nums
length = len(nums)
temp = length // 2
a = merge_sort(nums[:temp])
b = merge_sort(nums[temp:])
return merge(a, b)
def merge(a, b):
c = []
while len(a) > 0 and len(b) > 0:
if (a[0] > b[0]):
c.append(b[0])
b.remove(b[0])
else:
c.append(a[0])
a.remove(a[0])
if (len(a) < len(b)):
c += b
elif (len(b) < len(a)):
c += a
return c
if __name__ == '__main__':
nums = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
print(merge_sort(nums))
运行结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]