Pertama, definisi, karena ini cukup penting: Jenis yang stabil adalah yang dijamin tidak akan menyusun ulang elemen dengan kunci yang identik.
Rekomendasi:
Sortir cepat: Ketika Anda tidak memerlukan sortasi yang stabil dan kinerja case rata-rata lebih penting daripada kinerja case terburuk. Jenis cepat adalah O (N log N) rata-rata, O (N ^ 2) dalam kasus terburuk. Implementasi yang baik menggunakan penyimpanan tambahan O (log N) dalam bentuk ruang stack untuk rekursi.
Urutkan gabungan: Ketika Anda membutuhkan jenis, stabil O (N log N), ini adalah satu-satunya pilihan Anda. Satu-satunya kelemahan untuk itu adalah bahwa ia menggunakan ruang bantu O (N) dan memiliki konstanta sedikit lebih besar daripada jenis cepat. Ada beberapa jenis penggabungan di tempat, tetapi AFAIK semuanya tidak stabil atau lebih buruk daripada O (N log N). Bahkan O (N log N) pada jenis tempat memiliki konstanta yang jauh lebih besar daripada jenis gabungan lama biasa sehingga mereka lebih keingintahuan teoretis daripada algoritma yang berguna.
Heap sort: Ketika Anda tidak membutuhkan sortir yang stabil dan Anda lebih peduli dengan kinerja case terburuk daripada performa case rata-rata. Ini dijamin menjadi O (N log N), dan menggunakan O (1) ruang tambahan, yang berarti bahwa Anda tidak akan kehabisan tumpukan atau menumpuk ruang pada input yang sangat besar.
Introsort: Ini adalah jenis cepat yang beralih ke jenis tumpukan setelah kedalaman rekursi tertentu untuk mengatasi kasus terburuk O (N ^ 2) jenis cepat. Ini hampir selalu lebih baik daripada jenis cepat lama, karena Anda mendapatkan kasus rata-rata jenis cepat, dengan jaminan kinerja O (N log N). Mungkin satu-satunya alasan untuk menggunakan heap sort bukan ini adalah pada sistem dengan keterbatasan memori di mana ruang stack O (log N) praktis signifikan.
Jenis penyisipan : Ketika N dijamin kecil, termasuk sebagai dasar kasus penyortiran cepat atau gabungan. Meskipun ini O (N ^ 2), ia memiliki konstanta yang sangat kecil dan merupakan jenis yang stabil.
Bubble sort, sort sort : Ketika Anda melakukan sesuatu yang cepat dan kotor dan karena alasan tertentu Anda tidak bisa hanya menggunakan algoritma pengurutan perpustakaan standar. Satu-satunya keuntungan yang dimiliki jenis penyisipan ini adalah sedikit lebih mudah diterapkan.
Jenis non-perbandingan: Dalam beberapa kondisi yang cukup terbatas dimungkinkan untuk memecahkan penghalang O (N log N) dan mengurutkan dalam O (N). Berikut adalah beberapa kasus yang patut dicoba:
Counting sort: Ketika Anda menyortir bilangan bulat dengan rentang terbatas.
Urutan Radix: Ketika log (N) secara signifikan lebih besar dari K, di mana K adalah jumlah digit radix.
Sortir bucket: Bila Anda dapat menjamin bahwa input Anda didistribusikan secara merata.