Urutan radix secara teoritis sangat cepat ketika Anda tahu bahwa kunci berada dalam kisaran terbatas tertentu, katakanlah nilai dalam kisaran misalnya. Jika Anda baru saja mengonversi nilai menjadi basis yang membutuhkan waktu , lakukan pengurutan basis radix dan kemudian konversikan kembali ke basis asli Anda untuk keseluruhan algoritma .
Namun, saya telah membaca bahwa dalam prakteknya jenis radix biasanya jauh lebih lambat daripada melakukan misalnya quicksort acak :
Untuk array besar, radix sort memiliki jumlah instruksi terendah, tetapi karena kinerjanya yang relatif buruk, kinerja keseluruhannya lebih buruk daripada versi mergesort dan quicksort yang dioptimalkan untuk memori.
Apakah radix sort hanya algoritma teoretis yang bagus, atau apakah ia memiliki kegunaan praktis yang umum?
sumber
vector
). Tapi saya tidak tahu, karena saya belum membaca koran Lamarca.@ Robert: Tautan Anda cukup mengejutkan (sebenarnya saya tidak dapat menemukan kalimat yang dikutip). Pengalaman pribadi saya adalah untuk input acak, jenis radix jauh lebih cepat daripada STL
std::sort()
, yang menggunakan varian quicksort. Saya dulu membuat algoritma 50% lebih cepat dengan menggantistd::sort()
dengan jenis radix yang tidak stabil. Saya tidak yakin apa itu "versi memori yang dioptimalkan" dari quicksort, tapi saya ragu ini bisa dua kali lebih cepat dari versi STL.Posting blog ini mengevaluasi jenis radix bersama dengan beberapa algoritma pengurutan lainnya. Secara singkat, dalam evaluasi ini,
std::sort()
dibutuhkan 5,1 detik untuk mengurutkan 50 juta bilangan bulat, sedangkan di-tempat / tidak stabil jenis radix membutuhkan waktu 2,0 detik. Jenis radix yang stabil harus lebih cepat.Radix sort juga banyak digunakan untuk string sorting yang stabil. Varian jenis radix kadang-kadang terlihat untuk membangun susunan sufiks, BWT, dll.
sumber
Radix sort juga merupakan cara alami untuk mengurutkan kata-kata dengan panjang tetap di atas alfabet tetap, misalnya dalam algoritma Kärkkäinen & Sanders ( http://www.cs.cmu.edu/~guyb/realworld/papersS04/KaSa03.pdf )
sumber