이번에는 퀵 정렬에 대해서 정리해보려고한다.

퀵 정렬이란?

퀵 정렬은 불안정 정렬이며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬 방법이다.

분할 정복 알고리즘의 하나이며, 배열을 비균등하게 분할하여 정렬을 수행한다.

평균적으로 빠른 수행 속도를 보장하기에, 주로 사용하는 곳에서 개선된 방법으로 사용되고 있다.

본 글에서는 일반적인 퀵 정렬과 듀얼 피벗 퀵정렬에 대해 간단하게 알아볼 것이며, 이외에도 주로 사용하는 정렬 기능의 차이와 어떤 방법을 선택하면 좋을 지에 대해서는 아래 글을 참고하면 좋을 것 같다.

[Java] Java의 정렬 알고리즘 - Arrays와 Collections

동작 과정

Untitled

기본적으로 맨 왼쪽 원소를 **pivot**으로 설정하고, 이를 제외한 맨 왼쪽의 원소를 low, 맨 오른쪽의 원소를 **high**로 설정한다.

이후 조건에 맞춰 **low**를 증가시켜주거나, **high**를 줄여가며 교환하고 마지막에는 **pivot**과 **high**의 위치를 교환하게 된다.