ホーレパーティション機能をよりよく理解するために、自分自身のホアレパーティション機能を作成しようとしています。私はその定義と擬似コードを順調に進んだと思っていましたが、多くの場面で期待どおりに動作するように見えますが、ピボットに等しい複数の値を持つリストが渡されたときに崩壊して無限ループに入ります。バグを修正するにはどうすればよいですか?複数の値がピボットに等しいときにホアレパーティションが機能しない
def partition(lst, left_index, right_index):
pivot = lst[right_index]
while True:
#Increment left index until value at that index is greater or equal to pivot
while True:
if lst[left_index] >= pivot: break
left_index += 1
#Increment right index until value at that index is less or equal to pivot
while True:
if lst[right_index] <= pivot: break
right_index -= 1
if left_index < right_index:
lst[left_index], lst[right_index] = lst[right_index], lst[left_index]
else:
return right_index
return partition(0, end)
うーん... D Uchhh、これから私のコードをより深く見ることができますか?私はalgoの実装の基本についていくつか間違いを犯したかもしれないと思います...ありがとう^^ – MadRabbit