Algorithm QuickSort(A, left, right):
if(left<right)
p = partition(A, left, right);
QuickSort(A, left, p-1);
QuickSort(A, p+1, right);
Algorithm partition(A, left, right):
swap(A[left], A[p])
pivot = A[left]
i = left+1
j = right;
while(i<j)
while(i<right && A[i]<pivot) i++
while(j>left+1 && A[j]>pivot) j--
if(i<j) swap(A[i], A[j])
swap(A[left], A[j])
P(pivot index)를 결정하기 위해 partition(A,left right)호출
분할하기 쉽도록 피봇 데이터를 왼쪽으로 이동
왼쪽(i)과 오른쪽(j) two pointer를 사용하여 원소 비교
i가 j보다 커지면 탐색종료
pivot를 원래 위치로 설정
최종 결과
반복