Đầu tiên, một định nghĩa, vì nó khá quan trọng: Một loại ổn định là một thứ được đảm bảo không sắp xếp lại các phần tử với các khóa giống hệt nhau.
Khuyến nghị:
Sắp xếp nhanh: Khi bạn không cần một loại ổn định và hiệu suất trường hợp trung bình quan trọng hơn hiệu suất trường hợp xấu nhất. Một loại nhanh chóng là trung bình O (N log N), O (N ^ 2) trong trường hợp xấu nhất. Việc triển khai tốt sử dụng bộ lưu trữ phụ O (log N) dưới dạng không gian ngăn xếp để đệ quy.
Hợp nhất sắp xếp: Khi bạn cần một sắp xếp ổn định, O (N log N), đây là về tùy chọn duy nhất của bạn. Nhược điểm duy nhất của nó là nó sử dụng không gian phụ O (N) và có hằng số lớn hơn một chút so với sắp xếp nhanh. Có một số loại hợp nhất tại chỗ, nhưng AFAIK chúng đều không ổn định hoặc tệ hơn O (N log N). Ngay cả các loại O (N log N) tại chỗ có hằng số lớn hơn nhiều so với loại hợp nhất cũ đơn giản đến mức chúng gây tò mò về mặt lý thuyết hơn là các thuật toán hữu ích.
Sắp xếp heap: Khi bạn không cần một loại ổn định và bạn quan tâm nhiều hơn đến hiệu suất trường hợp xấu nhất so với hiệu suất trường hợp trung bình. Nó được đảm bảo là O (N log N) và sử dụng không gian phụ O (1), nghĩa là bạn sẽ không bất ngờ hết dung lượng heap hoặc stack trên các đầu vào rất lớn.
Introsort: Đây là một loại nhanh chóng chuyển sang một loại heap sau một độ sâu đệ quy nhất định để giải quyết trường hợp xấu nhất O (N ^ 2) sắp xếp nhanh chóng. Nó hầu như luôn luôn tốt hơn một loại nhanh cũ đơn giản, vì bạn có được trường hợp trung bình của một loại nhanh, với hiệu suất O (N log N) được đảm bảo. Có lẽ lý do duy nhất để sử dụng một loại heap thay vì điều này là trong các hệ thống bị hạn chế bộ nhớ nghiêm trọng trong đó không gian ngăn xếp O (log N) thực sự có ý nghĩa.
Sắp xếp chèn : Khi N được đảm bảo nhỏ, bao gồm cả trường hợp cơ sở của sắp xếp nhanh hoặc sắp xếp hợp nhất. Trong khi đây là O (N ^ 2), nó có hằng số rất nhỏ và là một loại ổn định.
Sắp xếp bong bóng, sắp xếp lựa chọn : Khi bạn đang làm gì đó nhanh và bẩn và vì một số lý do, bạn không thể chỉ sử dụng thuật toán sắp xếp của thư viện chuẩn. Ưu điểm duy nhất này có hơn loại sắp xếp chèn là dễ thực hiện hơn một chút.
Các loại không so sánh: Trong một số điều kiện khá hạn chế, có thể phá vỡ rào cản O (N log N) và sắp xếp theo O (N). Dưới đây là một số trường hợp đáng để thử:
Đếm sắp xếp: Khi bạn sắp xếp các số nguyên với phạm vi giới hạn.
Sắp xếp cơ số: Khi log (N) lớn hơn đáng kể so với K, trong đó K là số chữ số cơ số.
Sắp xếp nhóm: Khi bạn có thể đảm bảo rằng đầu vào của bạn được phân phối đồng đều.