Quick Sort는 분할정복(divide and conquer) 방법을 통해 주어진 배열을 정렬한다.
분할정복(divide and conquer)이란?
문제를 작은 2개의 문제로 분리해 해결한 후 결과를 모아 원래 문제를 해결하는 방법
public void quickSort(int[] arr, int left, int right) {
if(left >= right) return;
int pivot = partition(); // 분할
quickSort(arr, left, pivot-1); // 정복(conquer)
quickSort(arr, pivot+1, right); // 정복(conquer)
}
public int partition(int[] arr, int left, int right) {
int pivot = arr[left]; // 가장 왼쪽값을 피벗으로 설정
int i = left, j = right;
while(i > j) {
while(pivot < arr[j]) {
j--;
}
while(i < j && pivot >=arr[i]) {
i++;
}
swap(arr, i, j);
}
arr[left] = arr[i];
arr[i] = pivot;
return i;
}
위 글은 아래 링크를 참고하여 작성되었습니다.
https://gyoogle.dev/blog/