Phân vùng Lomuto vs Hoare
Lomuto bị ảnh hưởng khi sắp xếp các khóa bằng nhau, trong khi phân vùng Hoare thì không.
Cả hai lược đồ phân vùng đều chịu đựng như nhau khi sử dụng một trục xa từ trung tuyến.
Biện pháp rối loạn
Biện pháp rối loạn để lựa chọn cho các mục đích của quicksort là đơn giản.
Trả lời: Khoảng cách xa trung bình là trục cố định, so với dữ liệu ngẫu nhiên?
Nếu bạn khăng khăng sử dụng phân vùng Lomuto và nếu bạn cho rằng các giá trị trùng lặp được cho phép, bạn cần thêm thử nghiệm sau đây chống lại tính ngẫu nhiên:
B: Có bao nhiêu yếu tố trùng lặp ở đó, so với ngẫu nhiên.
Tất nhiên, thật ngớ ngẩn khi cho rằng các giá trị trùng lặp được cho phép trong tập dữ liệu của bạn và vẫn đánh giá phân vùng Lomuto, vì vậy bạn có thể nên loại bỏ trùng lặp trước hoặc chuyển sang phân vùng Hoare hoặc giả sử là trùng lặp.
Cả hai biện pháp đều tầm thường để định lượng bằng cách sử dụng số liệu thống kê.
Chúng tôi có thể loại trừ dữ liệu bệnh lý
Bất kỳ sai lệch nào khác từ tính ngẫu nhiên sẽ không quan trọng đối với mục đích phân tích quicksort. Miễn là trục gần với trung vị, nó sẽ hoạt động tốt trên tất cả các dữ liệu không phải là bệnh lý.
Khoảng cách từ ngẫu nhiên sẽ phải thực sự lớn để trở thành bệnh lý nhanh chóng, vì vậy chúng ta có thể loại trừ điều đó.
Không bao giờ sử dụng bất kỳ trục cố định nào trong mã thực
Lưu ý rằng nếu bạn viết mã thực với trục cố định *) (bất kể trục đó có thể là gì), bạn đang tự mở một cuộc tấn công từ chối dịch vụ, bởi vì kẻ tấn công có thể chèn một giá trị bệnh lý tại thời điểm đó và do đó bạn nên luôn luôn chọn một yếu tố ngẫu nhiên làm trục.
*) hoặc nhiều pivots nếu bạn chọn xivots tốt nhất.