0
몇 시간 동안 첫 번째 빠른 정렬 알고리즘을 작성하려고하지만 여전히 제대로 표시되지 않습니다. 목표는 배열을 정렬하기위한 빠른 정렬 코드를 작성하는 것입니다. 재귀 함수 quick_sort와 파티션 함수의 두 가지 함수를 사용하고 싶습니다.첫 번째 파티션 이후에 빠른 정렬이 작동하지 않습니다.
나누기 및 정복으로 생성 된 각 하위 배열에서 파티션 함수가 올바르게 작동하는 것처럼 보였으 나 반환 된 전체 배열은 첫 번째 파티션 (첫 번째 파티션이 효과가있는 반면 두 번째, 세 번째 파티션 , ..., 아무 효과가없는 것처럼 보였다).
나는 여기에서 무엇인가 놓쳤을 것임에 틀림 없었다, 어떤 힌트라도 필요로 하느냐? 당신이 다시 첫 번째 반복을 잡아 줄께 quicksort(a)
를 호출하기 때문에 모든 첫 번째 반복으로 낮고 높은 설정 기원전
def partition(a, first, last):
x = a[0]
j = 0
for i in range((first+1), (last+1)):
if x >= a[i]:
j = j + 1
a[i], a[j] = a[j], a[i]
a[0], a[j] = a[j], a[0]
return j
def quicksort(a):
quick_sort(a, 0, len(a) - 1)
def quick_sort(a, first, last):
if first < last:
j = partition(a, first, last)
# devide a into two parts and do quicksort respectively
quicksort(a[:j])
quicksort(a[j+1:])
return a
a = [6.5, 4, 2, 3, 9, 8, 9, 4, 7, 6, 1]
quicksort(a)
[: j]는 다른 배열이고, a 부. quicksort (a, first, j), quicksort (a, j + 1, last)를 사용해야합니다. – UmNyobe
정확히 내가 놓친 곳입니다! 고마워요 UmNyobe – enaJ