최근에 파이썬에서 퀵 정렬 알고리즘을 구현하려고했지만 제대로 작동하지 못했습니다. 프로그램이 하위 배열을 정렬하더라도 주 목록에는 반영되지 않습니다. 프로그래밍에 익숙하지 않아 누구나 내가 옳지 않은 부분이나 개념을 이해하도록 도와 줄 수 있습니까?내 빠른 정렬 알고리즘 구현의 버그
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