python実装のマージ2つのソートのリスト


pythonが実装する2つの順序付けされたリストをソートします.
#!/usr/bin/python
def megre(A, p, q, r):
	n1 = q - p + 1
	n2 = r - q

	L = [None] *n1
	R = [None] *n2
	print A
	for i in range(n1):
	 	L[i] = A[i + p]

	for j in range(n2):
		R[j] = A[q + j + 1]

	i = j = 0;
	print L
	print R
	for k in range(p, r):
		if L[i] < R[j]:
			A[k] = L[i]
			i += 1
		else:
			A[k] = R[j]
			j += 1
	return A

A = [1, 4, 36, 49, 89, 2, 3, 4, 100]
p , q, r = 0, 4, 8
print megre(A, p, q, r)
			
##        ,  L        R,  R   ,    L,R       +  (float("int"))
A = [20, 30, 36, 49, 89, 2, 3, 4, 5]
p , q, r = 0, 4, 8
print megre(A, p, q, r)

変更後のコードは次のとおりです.
#!/usr/bin/python
def megre(A, p, q, r):
	n1 = q - p + 1
	n2 = r - q

	L = [None] *n1
	R = [None] *n2
	print A
	for i in range(n1):
	 	L[i] = A[i + p]
	L.append(float("inf"))
	for j in range(n2):
		R[j] = A[q + j + 1]
	R.append(float("inf"))

	i = j = 0;
	print L
	print R
	for k in range(p, r + 1):
		if L[i] < R[j]:
			A[k] = L[i]
			i += 1
		else:
			A[k] = R[j]
			j += 1
	return A

A = [1, 4, 36, 49, 89, 2, 3, 4, 100]
p , q, r = 0, 4, 8
print megre(A, p, q, r)
			
print "+++++++++++++++++++++++"
A = [20, 30, 36, 49, 89, 2, 3, 4, 5]
p , q, r = 0, 4, 8
print megre(A, p, q, r)