시간 복잡도
최악: O(n^2)
평균: O(n*logn)
java에서 Arrays.sort()로 사용한다.
package javastudy;
public class quickSort {
public static void qs(int a[], int low, int high) {
if (low < high) {
int s = partition(a, low, high); // 기준 pivot
qs(a, low, s - 1); // 왼쪽 배열
qs(a, s + 1, high); // 오른쪽 배열
}
}
public static int partition(int a[], int low, int high) {
int pivot = a[low]; // 피벗을 배열의 첫 번째 요소로 설정
int i = low + 1;
int j = high;
while (i <= j) {
while (i <= high && a[i] <= pivot) {
i++;
}
while (j >= low && a[j] > pivot) {
j--;
}
if (i < j) { // i가 j보다 작을 때만 교환
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
// 피벗을 올바른 위치에 배치
a[low] = a[j];
a[j] = pivot;
return j; // 피벗의 최종 위치 반환
}
public static void printArray(int a[]) {
for (int num : a) {
System.out.print(num + " ");
}
System.out.println(); // 배열 출력 후 줄바꿈
}
public static void main(String[] args) {
int a[] = {8, 5, 6, 2, 4};
printArray(a);
qs(a, 0, a.length - 1); // 배열의 크기를 사용하여 인덱스 설정
printArray(a);
}
}