mergesortは分裂と征服によって理解できます。一定の時間内にソートできるか、またはリストが1つだけのもので、リストをマージするまで、 。なぜこのようにマージソートを実装できないのですか?
def mergesort(l):
if len(l)<=1:
return l
l1 = l[0:len(l)//2+1]
l2 = l[len(l)//2:]
l1 = mergesort(l1)
l2 = mergesort(l2)
return merge(l1,l2)
は私が作業マージの実装を持っていると私はそれが正常に動作しますが、マージソートの実装はそれだけでリストの要素の半分を返す動作しません確認しました。
インターネットで見ると、mergesortはl & rとm =(l + r)/ 2を使用して実装されています。実装で何が問題になっていますか?私は再帰的にリストを細分化し、併合しています。
細かいことだか分からないのですが、あなたは '+ 1' 0 [ 'ではない必要があります:LEN(L)// 2 + 1] '。質問に' merge'実装を追加してもらえますか? – DAle