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))
# 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写希尔、堆、快速、归并排序
- 归并排序(python3)
- 归并排序——python
- Python 数据结构与算法——归并排序
- python实现归并排序
- 排序算法总结(归并排序、快速排序)(python实现)
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- 笨办法学 Python · 续 练习 16:冒泡、快速和归并排序
- 用python实现归并排序
- 排序算法C++&&Python实现---归并排序
- 归并排序及Python实现
- 排序和搜索(八)——归并排序的python实现
- python中实现二分查找,插入排序,归并排序,快速排序
- 算法之归并排序(Python)
- [python]归并排序
- Python 实现归并排序
- 归并排序(python实现)
- 快速排序,归并排序,堆排序python实现
- Python实现二路归并排序
- 排序算法C++&&Python实现---归并排序