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

Python - 归并排序

2018-02-04 22:07 232 查看
记录学习中的点点滴滴--归并排序

# coding=utf-8

def merge_sort(alist):
length = len(alist)
if length <= 1:
return alist

mid = length / 2
# 递归进行列表拆分
left = merge_sort(alist[:mid])
right = merge_sort(alist[mid:])

# 合并
left_pointer, right_pointer = 0, 0
result = []
# 循环条件为两个指针都没有指向队列尾部
while left_pointer < len(left) and right_pointer < len(right):
if left[left_pointer] <= right[right_pointer]:
result.append(left[left_pointer])
left_pointer += 1
else:
result.append(right[right_pointer])
right_pointer += 1
# 当跳出循环的时候,表示有一个指针已经指向尾部,此时将left和right两个队列中剩余数据追加到result尾部
# 由于有一个指针已经指向尾部,则其中一个切片必然为空列表[]
result += left[left_pointer:]
result += right[right_pointer:]
return result

if __name__ == "__main__":
l = [123, 55, 56, 23, 545, 88, 98, 100]
print("排序前:%s" % str(l))
l1 = merge_sort(l)
print("排序后:%s" % str(l1))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python归并排序