python合并列表重新排序_python实现的合并两个排序的列表
python實(shí)現(xiàn)的將兩個(gè)排好序的列表進(jìn)行排序:
#!/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]?
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)
##下面的會(huì)出現(xiàn)異常,應(yīng)為L的第一個(gè)始終大于R,所以R會(huì)越界,所以要在L,R的最后加上一個(gè)+無窮(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]?
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)
總結(jié)
以上是生活随笔為你收集整理的python合并列表重新排序_python实现的合并两个排序的列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 更改python默认路径_Linux下多
- 下一篇: bose音响充不进去电怎么办(Bose的