Neden Diziler farklı türleri için iki farklı sıralama algoritmaları java?
Arrays.java
's sıralama yöntemi ilkel dizileri için quicksort kullanır ve nesne dizileri için. sıralama birleştirme Çoğu zaman quicksort sıralama ve birleştirme maliyeti daha az bellek daha hızlı olduğunu düşünüyorum. Benim deneyler her iki algoritmaları O(nlog(n)), ancak bu destek. Neden farklı algoritmalar farklı türleri için kullanılır?
CEVAP
En büyük sebeplerinden biri, quicksort değildirkararlıyani eşit girişleri sırasında sıralama göreli konumlarını değiştirebilir; diğer şeyler arasında, zaten sıralanmış bir dizi sıralama bu demektir ki, değişmeden kalır.
İlkel türler kimlik (aynı değere sahip iki değer vermez ayırt etmek yolu yoktur), bu onlar için önemli değildir. Ama başvuru türleri için, bazı uygulamalar için sorunlara neden olabilir. Bu nedenle, istikrarlı bir sıralama için kullanılır birleştirme.
OTOH, (n*log(n) garanti) kullanmak için bir neden ilkel türler için tür dizinin bir klon yapmak gerekli olabilir birleştirme. Başvurulan nesneler genellikle başvurular dizi çok daha fazla bellek sürebilir nereye başvuru türleri için, bu genellikle önemli değildir. Ama ilkel türler için, dizi klonlama düpedüz bellek kullanımı iki katına çıkar.
Neden Java bize bir isim dosya adından...
Neden GCC neredeyse aynı C kodu için t...
Java'da bir nesne oluşturmak için tüm ...
Neden /bin/sh ve her bir puan bile far...
c neden initializer_list davranış için...