1 퀵정렬 퀵정렬은 피벗(pivot)을 지정해두고, 피벗의 왼쪽에는 피벗보다 작은 값, 피벗의 오른쪽에는 피벗보다 큰 값을 두도록 각 값들을 비교하고 바꾸어준다. 바꾼 후에는 피벗보다 작은 왼쪽 배열과 피벗보다 큰 오른쪽 배열로 나누어서 그 둘을 각각 다시 앞의 과정을 반복해준다. 이 과정은 재귀함수로 구현되어있다. 퀵정렬은 피벗을 어떻게 지정하냐에 따라 성능이 달라진다. 보통은 그냥 배열의 중앙에 있는 값을 정하기도 한다. 2 시간복잡도 시간복잡도는 평균적으로 $O(n \log n)$이다. 다만 최악의 경우에는 $O(n^2)$이 나오기도 한다. 두 경우를 살펴보면서 알아보겠다. 먼저 평균적인 경우인데 피벗으로 중앙값에 가까운 값이 뽑힌다고 생각하면 배열이 본래 크기의 2분의 1로 잘릴 것이다. 그러면 ..