# 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算法的实现过程
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 什么是真理? 丁小汝不知道。 听说,笑有时候是为了掩饰尴尬,有时候是为了人际迎合。可不知,有人想看你笑,发自内心的...
- 我们不合的不过是你所见到的一类群罢了。 衍衍众生,又不是只有某一类。 你总归会遇到世界上属于自己的另一群人。 也许...