자료 구조와 알고리즘
퀵 정렬의 시간 복잡도가 O(n²)이 되는 전형적인 경우는?
- A데이터가 뒤죽박죽으로 늘어서 있고, 피벗(기준값)을 무작위로 고르는 경우
- B데이터의 개수가 2의 거듭제곱인 경우
- C이미 정렬된 데이터에서 항상 맨 앞의 원소를 피벗으로 하는 경우
정답과 해설 보기
정답: C. 이미 정렬된 데이터에서 항상 맨 앞의 원소를 피벗으로 하는 경우
퀵 정렬은 피벗보다 작은 원소와 큰 원소로 나누고, 각각을 다시 나누어 갑니다. 정렬된 데이터에서 항상 맨 앞을 피벗으로 하면 매번 피벗이 최솟값이 되어 분할이 '0개와 나머지 전부'로 치우치므로, 비교는 n(n−1)/2회(n = 100이면 4,950회)가 됩니다. 피벗을 무작위로 고르거나 세 값의 중앙값으로 하면, 치우친 분할이 계속될 가능성은 매우 작아집니다. 데이터의 개수는 시간 복잡도와 관계가 없습니다.
이어서 자료 구조와 알고리즘 9문제 더 풀기