python実装のマージ2つのソートのリスト
1285 ワード
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)