# coding=utf-8
A = [5, 2, 4, 7, 10, 1, 3, 2, 6]
def merge2(A, p, q, r):
"""
A[p:q]是一个排好序的数组
A[q:r]是另外一个排好序的数组
将两个排好序的子数组组成一个总的排好序的数组
:param A:
:param p:
:param q:
:param r:
:return:
"""
n1 = q - p + 1
n2 = r - q
L = [-1 for x in range(n1)]
R = [-1 for x in range(n2)]
for i in range(0, n1):
L[i] = A[p + i]
for j in range(0, n2):
R[j] = A[q + j + 1]
i = 0
j = 0
for k in range(p, r + 1):
if i >= n1 and j < n2: # 当L拍完序R未拍完序的情况
A[k] = R[j]
j = j + 1
elif j >= n2 and i < n1: # 当R拍完序L未拍完序
A[k] = L[i]
i = i + 1
elif L[i] <= R[j]:
A[k] = L[i]
i = i + 1
else:
A[k] = R[j]
j = j + 1
def merge_sort(A, p, r):
if p < r:
q = (p + r) / 2
merge_sort(A, p, q)
merge_sort(A, q + 1, r)
merge2(A, p, q, r)
print A, p, q, r
merge_sort(A, 0, len(A) - 1)
print A
第二章merge算法的实现过程
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 什么是真理? 丁小汝不知道。 听说,笑有时候是为了掩饰尴尬,有时候是为了人际迎合。可不知,有人想看你笑,发自内心的...
- 我们不合的不过是你所见到的一类群罢了。 衍衍众生,又不是只有某一类。 你总归会遇到世界上属于自己的另一群人。 也许...