다음 파이썬 코드로 작성된 partition() 함수를 이용하여, 주어진 배열을 퀵 정렬(quick sort)로 오름차순 정렬하고자 한다. 정렬 과정에서 단계별 정렬 순서로 나타날 수 없는 것은? (단, 피벗(pivot)은 정렬하고자 하는 대상의 마지막 원소로 선택한다)
# 정렬하고자 하는 대상인 A[first]…A[last]를
# 피벗(A[last]) 기준으로 분할하는 함수
def partition(A, first, last):
p = A[last]
low = first
high = last
while low < high:
while p > A[low] and low < high:
low += 1
while p <= A[high] and low < high:
high -= 1
if low < high:
A[low], A[high] = A[high], A[low]
A[low], A[last] = A[last], A[low]
return low배열 | 7 | 3 | 2 | 19 | 13 | 5 | 11 | 17 |
- ①2, 3, 5, 7, 13, 11, 17, 19
- ②2, 3, 5, 11, 7, 13, 17, 19
- ③2, 3, 5, 11, 13, 7, 17, 19
- ④7, 3, 2, 11, 13, 5, 17, 19
정답 ②
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)