list = ( 20 , 16 , 2 , 48 , 99 , 15 , 12 , 6 )
에서 피봇값을 중앙값 48로 잡고
L . R로 접근하면
처음부터 멘붕
L은 피봇값보다 크거나 같으니까 20,16,2 모두 지나서
L = 피봇값인 48에서 멈추고
R = 피봇값보다 작은값 6에서 멈춰요
교환을 하면 피봇값이 이동했으니 그 자리의 값을 리턴해줘야하는데
그럼 99는 어디로 가야하나요
에서 피봇값을 중앙값 48로 잡고
L . R로 접근하면
처음부터 멘붕
L은 피봇값보다 크거나 같으니까 20,16,2 모두 지나서
L = 피봇값인 48에서 멈추고
R = 피봇값보다 작은값 6에서 멈춰요
교환을 하면 피봇값이 이동했으니 그 자리의 값을 리턴해줘야하는데
그럼 99는 어디로 가야하나요
피봇은 중앙값으로 했을때요
피봇은 여전히 48 이고 L은 99고, R은 12 이고 그러면 치환 하면 될테고, 다음 루프는 L은 역시 99일거고, R은 15 인데, 인덱스가 교차했으니, 치환없이 일차 루프 끝났네 그럼 배열은 이렇게 되겠네 20, 16, 2, 6, 12, 15, 99, 48 여기서 L의 인덱스랑, R의 인덱스가 같아진 15를 기준으로 20, 16,2, 6, 12, 15 까지 퀵소트 하고, 99, 48도 나눠서 퀵소트 하네. 책 다시보니 전에 생각 못했던걸 알게 되는 구만 ㅋㅋㅋㅋ 결론은 피봇값은 한번 정해진값 그대로임, 치환 되든 말든, 그리고 R값이 정해진 상황에서 L의 인덱스가 R의 인덱스 보다 크거나 같으면, R의 인덱스를 기준으로 나눠서 다시 퀵소트.....ok?
난빨라는 빠릅니다 cda
난빨라는 빠릅니다. YZW