多くの Web サイトで提供されている疑似コードに従って、私はこのHoare
分割アルゴリズムを作成しました。これは、指定されたピボットに基づいて分割されるサブ配列の開始インデックスと終了インデックスである配列を取ります。それは正常に動作しますが、誰かがロジックを説明できますか? コードは次のとおりです。
def hoare(arr,start,end):
pivot = 4
i,j = start,end
while i < j:
while i < j and arr[i] <= pivot:
i += 1
while j >= i and arr[j] > pivot:
j -= 1
if i < j:
arr[i],arr[j] = arr[j],arr[i]
return j
パーティショニングの別の変形であるLomuto
アルゴリズムがあります。Hoare
そもそもアルゴリズムを理解していないため、違いを見つけることはできませんが、似たようなことを行います。アルゴリズムで何が起こっているのか、どのケースでどちらがより良いパフォーマンスを発揮するのかを誰かが説明できますか?