Trong một khóa học thuật toán tiêu chuẩn, chúng tôi được dạy rằng quicksort trung bình là và trong trường hợp xấu nhất. Đồng thời, các thuật toán sắp xếp khác được nghiên cứu là trong trường hợp xấu nhất (như mergesort và heapsort ), và thậm chí cả thời gian tuyến tính trong trường hợp tốt nhất (như bubbleort ) nhưng có thêm một số nhu cầu về bộ nhớ.O ( n 2 ) O ( n log n )
Sau khi lướt qua một số lần chạy nhiều hơn, việc nói rằng quicksort không nên hiệu quả như những lần khác.
Ngoài ra, hãy xem xét rằng các sinh viên học trong các khóa học lập trình cơ bản nói chung là không thực sự tốt vì nó có thể sử dụng quá nhiều bộ nhớ, v.v. Do đó (và mặc dù đây không phải là một đối số thực sự), điều này đưa ra ý tưởng rằng quicksort có thể không thực sự tốt vì nó là một thuật toán đệ quy.
Tại sao, sau đó, quicksort vượt trội hơn các thuật toán sắp xếp khác trong thực tế? Nó có liên quan đến cấu trúc dữ liệu trong thế giới thực không? Nó có liên quan đến cách thức hoạt động của bộ nhớ trong máy tính không? Tôi biết rằng một số ký ức nhanh hơn các ký ức khác, nhưng tôi không biết liệu đó có phải là lý do thực sự cho hiệu suất phản trực giác này (khi so sánh với các ước tính lý thuyết).
Cập nhật 1: một câu trả lời chính tắc nói rằng các hằng số liên quan đến của trường hợp trung bình nhỏ hơn các hằng số liên quan đến các thuật toán . Tuy nhiên, tôi vẫn chưa thấy một lời biện minh đúng đắn về điều này, với các tính toán chính xác thay vì chỉ những ý tưởng trực quan.O ( n log n )
Trong mọi trường hợp, có vẻ như sự khác biệt thực sự xảy ra, như một số câu trả lời cho thấy, ở cấp độ bộ nhớ, trong đó việc triển khai tận dụng cấu trúc bên trong của máy tính, ví dụ, sử dụng bộ nhớ cache nhanh hơn RAM. Các cuộc thảo luận đã được thú vị, nhưng tôi vẫn muốn xem chi tiết hơn liên quan đến quản lý bộ nhớ với, vì có vẻ như những câu trả lời đã làm với nó.
Cập nhật 2: Có một số trang web cung cấp so sánh các thuật toán sắp xếp, một số fancier hơn các thuật toán khác (đáng chú ý nhất là sorting-alerskyms.com ). Khác với việc trình bày một trợ giúp trực quan tốt đẹp, phương pháp này không trả lời câu hỏi của tôi.