반응형
🤔 퀵 정렬이란?
- 퀵 정렬은 기준값을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복하여 정렬하는 알고리즘이다.
- 기준값 선정에 따라 시간 복잡도가 영향을 미친다.
- 평균적으로 시간 복잡도는 O(nlogn)이고, 최악의 경우 O(n^2)이 된다.
👉 퀵 정렬 수행 방식
✔️ 퀵 정렬 과정
- 데이터를 분할하는 기준값(pivot)을 설정한다.
- 기준값을 기준으로 다음 과정을 거쳐 2개의 영역으로 분리한다.
a. start가 가리키는 데이터가 기준값보다 작으면 start를 오른쪽으로 1칸 이동한다.
b. end가 가리키는 데이터가 기준값보다 크면 end를 왼쪽으로 1칸 이동한다.
c. start가 가리키는 데이터가 기준값보다 크고, end가 가리키는 데이터가 기준값보다 작다면, start,end가 가리키는 데이터를 swap하고 start는 오른쪽, end는 왼쪽으로 이동한다.
d. start와 end가 만날 때까지 반복한다.
e. start와 end가 만난 지점의 데이터가 기준값보다 크다면, 만난 지점의 왼쪽에, 작으면 만난 지점의 오른쪽에 기준값을 삽입한다. - 분리된 영역에서 다시 기준값을 선정한다.
- 분리된 영역이 1개 이하가 될 때 까지 1, 2, 3 순서를 반복한다.
반응형