void quickSort( int a[], int l, int r)
{
if(l<r)
{
int p=partition(a, l, r);
quickSort(a, l , p-1); // 1 -> 1
quickSort(a , p+1, r); // 1 -> 2
}
}
분할(= partition() ) 하는거까진 알겠는데 저기 quickSort()를 두번 재귀하는부분을 잘모르겠어요
한번 재귀는 알겠는데말이죠...
첫번째 재귀함수를 1 -> 1 이라 하고 두번째 재귀함수를 1 -> 2 라고 하고 첫번째 재귀함수가 호출하는 자기자신을 1 - > 1 -> 1 이라 하면
1 -> 1 -> 1 -> 1 -> 1 재귀가 종료되면
a) 1 -> 1 -> 1 -> 2
b) 1 -> 2 -> 1 -> 1
a,b 둘중 어느 순서로 실행되는건가요?
두덩이로 나뉘었으니 앞꺼 뒤에꺼 각자 처리하는거져
element하나의 위치를 확정시키고 그것을 제외한, 그것의 앞 뒤 데이터들을 각자 다시 반복처리
ㄴ 이론적으로 그렇게 하는건 알겠는데 실제로 손으로 따라가면서 해보면 피봇을 기준으로 앞뒤로 분할 하고 분할한 앞뒤의 피봇을 다시 정하고 다시 반복하는게 아닌거 같아서 말이지