私はPython 2.7で並列マージソートを試みましたが、できません。スレッドやマルチプロセッシングで実装すべきかどうかわからないからです。並列コードをスレッドまたはマルチプロセッシングで次のコードを記述してください:Python 2.7でどのように並列マージソート?
def merge(left, right):
result = []
i ,j = 0, 0
while i < len(left) and j < len(right):
print('left[i]: {} right[j]: {}'.format(left[i],right[j]))
if left[i] <= right[j]:
print('Appending {} to the result'.format(left[i]))
result.append(left[i])
print('result now is {}'.format(result))
i += 1
print('i now is {}'.format(i))
else:
print('Appending {} to the result'.format(right[j]))
result.append(right[j])
print('result now is {}'.format(result))
j += 1
print('j now is {}'.format(j))
print('One of the list is exhausted. Adding the rest of one of the lists.')
result += left[i:]
result += right[j:]
print('result now is {}'.format(result))
return result
def mergesort(L):
print('---')
print('mergesort on {}'.format(L))
if len(L) < 2:
print('length is 1: returning the list withouth changing')
return L
middle = len(L)/2
print('calling mergesort on {}'.format(L[:middle]))
left = mergesort(L[:middle])
print('calling mergesort on {}'.format(L[middle:]))
right = mergesort(L[middle:])
print('Merging left: {} and right: {}'.format(left,right))
out = merge(left, right)
print('exiting mergesort on {}'.format(L))
print('#---')
return out
mergesort([6,5,4,3,2,1])
ありがとうございます。
このコードは実行されていません。どちらかをランダムにコピーして貼り付けるか、書式設定を混乱させるか – byxor
「このコードをスレッドまたはマルチプロセッシングで並列コードを書いてください」それは注文ですか? – TigerhawkT3
@ TigerhawkT3私はまったく同じ質問をしようとしていました:) – mutantkeyboard