
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
퀵정렬 강의에서 prac에 i = ps - 1 이 부분 강의에서 설명해주시긴 했는데 잘 이해가 안되어서요 1빼는 이유 자세히 다시 설명해 주실 수 있을까요
작성한 코드 및 에러 메세지
def quicksort(lst, start, end):
def partition(part, ps, pe): # 뉴 피벗 구하는 짓
pivot = part[pe] #배열의 마지막을 피벗으로 설정
i = ps - 1 #첫 비교때 피벗보다 작은 값이 나오면 i를 +1해줬을때 0이 나와야함
for j in range(ps, pe): #피벗값과 배열요소를 반복비교하기 위한 반복문
if part[j] <= pivot: #배열 요소가 피벗값보다 작다면
i += 1 #피벗경계 범위를 한칸 늘려준다
part[i], part[j] = part[j], part[i] # 값을 스위칭한다
#위 반복이 끝나고 나면 i는 피벗보다 작은 집합의 범위이므로 i+1 자리에 피벗을 위치시킨다
part[i + 1], part[pe] = part[pe], part[i + 1] #경계와 끝값(현피벗)을 스위칭한다
return i + 1
if start >= end:
return None
p = partition(lst, start, end)
quicksort(lst, start, p - 1)
quicksort(lst, p + 1, end)
return lst
