배열의 첫 번째 절반에있는 각 요소가 배열의 두 번째 절반에있는 각 요소보다 작도록 배열을 분할하려고합니다. 이것은 빠른 정렬에서 사용되는 것과 동일한 파티션 알고리즘입니다. 어떤 이유로 배열 A = [2, 8, 7, 1, 3, 5, 6, 4]
을 사용할 수 있지만 A = [7, 3, 6, 1, 9, 5, 4, 8]
은 작동하지 않습니다.배열이 올바르게 나오지 않습니다.
def partition(A):
x = A[len(A)-1]
i = -1
for j in range (0, len(A)-2):
if A[j]<=x:
i = i + 1
# exchange A[j] and A[i]
jValue = A[j]
A[j] = A[i]
A[i] = jValue
# exchange A[len(A)-1] and A[i+1]
rValue = A[len(A)-1]
A[len(A)-1] = A[i+1]
A[i+1] = rValue
print(A)
는 1) 각 패스 볼 것으로 예상 무엇을 쓰기 디버깅합니다. 2) 각 패스에서 입력 및 출력을 인쇄하는 프로그램을 가져옵니다. 그들은 어디에서 동의하지 않습니까? 왜? 네, 지루한 일이지만 몇 분 안에 문제를 발견 할 수 있습니까? ; -/내가 어떻게 코드를 디버그하는지 추측. ; -/ –
나는 12 번에 걸쳐 종이에 대한 전체 과정을 밟았으며, 결과는 내 코드가 출력하는 것과 일치한다. 첫 번째 네 개의 숫자가 인덱스 7의 피벗보다 작기 때문에 'A = [7, 3, 6, 1, 9, 5, 4, 8]'이 예상대로 작동하지 않는다는 것을 알았습니다 – Brosef