Tôi đang đọc về quicksort, xem xét các triển khai khác nhau và tôi đang cố gắng quấn đầu quanh một thứ gì đó.Quicksort: vị trí trục xoay sau một phân vùng
Trong this thực hiện (trong đó công trình dĩ nhiên), trục được chọn làm yếu tố giữa và sau đó con trỏ di chuyển trái và phải để bên phải và trái cho phù hợp, trao đổi các yếu tố để phân vùng xung quanh trục.
Tôi đã thử mảng [4, 3, 2, 6, 8, 1, 0].
Trên phân hoạch đầu tiên, trục xoay là 6 và tất cả các phần tử bên trái đã nhỏ hơn 6, vì vậy con trỏ bên trái sẽ dừng tại trục xoay. Ở bên phải, chúng tôi sẽ hoán đổi 0 với 6, rồi 1 và 8, do đó, vào cuối lần lặp đầu tiên, mảng sẽ trông giống như:
[4, 3, 2, 0, 1, 8, 6].
Tuy nhiên, tôi đã có ấn tượng rằng sau mỗi lần lặp trong quicksort, trục kết thúc ở đúng vị trí của nó, vì vậy ở đây nó sẽ kết thúc ở vị trí 5 của mảng.
Vì vậy, có thể (và ok) rằng trục không kết thúc trong lặp lại chính xác của nó hoặc là nó một cái gì đó hiển nhiên tôi đang thiếu?
Cảm ơn bạn đã viết kỹ lưỡng, nó làm cho nó rõ ràng hơn nhiều. – kenny