L = [7, 12, 1, -2, 0, 15, 4, 11, 9]
def quicksort(L, low, high):
if low < high:
pivot_location = Partition(L, low, high)
quicksort(L,low, pivot_location)
quicksort(L,pivot_location + 1, high)
return L
def Partition(L, low, high):
pivot = L[low]
leftwall = low
for i in range(low + 1, high, 1):
if L[i] < pivot:
temp = L[i]
L[i] = L[leftwall]
L[leftwall] = temp
leftwall += 1
temp = pivot
pivot = L[leftwall]
L[leftwall] = temp
return leftwall
print(quicksort(L, 0, len(L) - 1))
コードを実行すると、次の結果が生成されます。[-2、0、1,4、7、11、12、15、9]。 1つの要素が間違った位置にあります。誰が問題がどこにあるのか教えていただけたら?Quicksort in Python
'high'は' len(L) 'でなければなりません...そして、' low、pivot'と 'ピボット、ハイ '(そうでないピボット+ 1)。 –
私が行った変更のみで、コードは(len(L) - 1)の代わりにlen(L)です。分割は正しい。 –