您的位置:首页 > 编程语言 > Python开发

改进版python实现的归并排序

2017-11-01 22:00 465 查看
def merge(a, begin, mid, end):

left = a[begin:mid]
right = a[mid:end]
left.append(float("inf"))
right.append(float("inf"))
i = 0
j = 0
for k in range(begin, end):
if left[i] < right[j]:
a[k] = left[i]
i = i + 1
else:
a[k] = right[j]
j = j + 1

def merge_sort(a, begin, end):
if begin == end - 1:
return
mid = (begin + end) >> 1
merge_sort(a, begin, mid)
merge_sort(a, mid, end)
merge(a, begin, mid, end)

if __name__ == "__main__":
a = [10, 2, 3, 6, 8, 1, 10, 100, 200, 6]  # , 3, 10, 4, 3, 10, 10, 4, 3, 10]
print(a)
merge_sort(a, 0, len(a))
print(a)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: