归并排序(python)
2017-10-09 20:05
190 查看
def merge(A, B): ''' 合并两个已排序的数组 Args: list A:已排序数组A list B:已排序数组B Returns: list result: 已合并的有序数组 ''' i,j = 0,0 result = [] while i<len(A) and j<len(B): if A[i]<B[j]: result.append(A[i]) i += 1 else: result.append(B[j]) j += 1 result += A[i:] result += B[j:] return result def merge_sort(A): ''' 归并排序 思路: 不断递归, 直到只有一个数值, 归并排序可以不要将一个数与其他所有的额数对照, 减少操作次数 ''' if len(A)==1: #当最后为叶子节点时候返回数组 return A else: m = len(A)//2 #构造左二叉树 left = merge_sort(A[:m]) #构造右二叉树 right = merge_sort(A[m:]) #合并左右 return merge(left, right)
测试: A = [22,12,45,25,56] print(merge_sort(A))
相关文章推荐
- Python实现归并排序
- 利用Python实现归并排序
- python写希尔、堆、快速、归并排序
- 改进版python实现的归并排序
- 经典排序算法:归并排序(python)
- 排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
- JavaScript算法 ,Python算法,Go算法,java算法,系列之【归并排序】篇
- python数据结构学习笔记-2016-11-23-01-归并排序
- 归并排序详解(python实现)
- 归并排序(python实现)
- python实现归并排序
- 归并排序(Python)
- JavaScript算法 ,Python算法,Go算法,java算法,系列之【归并排序】篇
- 算法基础:排序(二)——归并排序——Python实现
- 【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序
- 用Python实现八大排序算法--归并排序
- Python学习笔记:归并排序和快速排序
- 归并排序(python3)
- python--归并排序
- Python 数据结构与算法 —— 从分治的角度看快速排序、归并排序