最近、私はPythonでクイックソートアルゴリズムを実装しようとしていましたが、正しく動作させることができませんでした。プログラムはサブ配列をソートしますが、メインリストには反映されていません。私はプログラミングに慣れていないので、誰も私が正しくやっていない部分やコンセプトを理解するのを助けることができますか?クイックソートアルゴリズムの実装でのバグ
def swap(arr, right, left):
temp = arr[right]
arr[right] = arr[left]
arr[left] = temp
def split_array(arr, right):
left_half = arr[:right]
right_half = arr[right:]
a = (left_half, right_half)
return a
def quick_sort(arr):
if len(arr) >= 2:
pivot = 0
left_mark = pivot + 1
right_mark = len(arr) - 1
stop = True
while stop:
while arr[pivot] > arr[left_mark] and left_mark < right_mark:
left_mark += 1
while arr[pivot] < arr[right_mark] and left_mark < right_mark:
right_mark -= 1
if left_mark < right_mark:
swap(arr, right_mark, left_mark)
right_mark -= 1
left_mark += 1
else:
if arr[pivot] > arr[right_mark]:
swap(arr, right_mark, pivot)
stop = False
left, right = split_array(arr, right_mark)
quick_sort(left)
quick_sort(right)
return arr
array = [8, 6, 1, 7, 0, 5, 4, 3, 2, 1]
print(quick_sort(array))
これは正しい考えですが、これがまだ機能しない理由についての私の答えを見てください。 ( 'left'と' right'は実際には決して変更されません)。 – smarx