2016-04-05 22 views
0

i var sth gibi: (X - farklı algoritmalar) TestClass yılındaSıralama Uygulama, aynı test durumu

public class XAlgorithm{ 
sort(List l){...} 
} 

aşağıda belirtildiği hediye olarak:

ArrayList array = new ArrayList(...); // original array 

public static void main(String[]args){ 

    AlgorithmsTest at = new AlgorithmsTest(); 
    at.testInsertSort(); 
    // when add at.array.printAll() - method printing all elements, there are no changes to original array what I want 
    at.testBubbleSort(); 
    at.testSelectSort(); 
    at.testShellSort(); 

} 



testBubbleSort{ 
    ... 
    ArrayList arrayBubble = new ArrayList(testBubble.sort(array)); 
    ... 
} 

Sorun Sistemi ile ölçülen benim sonuç (zaman olduğu .currentTimeMilis()), ex için başlattığımda farklıdır. Aynı algoritmadan iki kere üst üste, aynı zamanda garip çünkü her metodu kopyaladığımda bile (tüm yeni Elemanları yeni diziye koyarak ve sonra da üzerinde çalışarak) hala yanlış çalışıyor. Zaman, hangisi olursa olsun, ana algoritmada daima en büyüktür.

Hatta her algoritma arasındaki diziyi kontrol ettim (yukarıdaki // yorumdaki gibi) ve doğrudur - hiçbir değişiklik yapılmadı, bu yüzden sorun nerede: /? Eğer bir yerde sıralama ve daha sonra dizinin bir kopyasını yapıyoruz gibi size dizinin bir kopyasını yapıyoruz belirtmiş olsalar bile önceden

+0

Olası çoğaltılabilir [Java'da nasıl doğru bir mikro-benchmark yazarım?] (Http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in -java) – Tom

+0

Maalesef herhangi bir bağlantı göremiyorum, o kod karmaşık değil. – kolboc

cevap

0

yılında

sayesinde bu sesler.

Bu nedenle, ilk kez en uzun sürecek, ancak sonraki tüm çalışmaların dizisi "sıralanmış" olduğu için yapacak daha az iş var.

Ayrıca, sıralama algoritmalarınızın içinde hata olduğunu, örneğin ilk sıraya yaklaştığınızı (ya da doğru olduğunu) söyleriz, fakat sonradan gelen bir sıralama, küçük bir değişime neden olan bir köşe durumu buluyordur. sıralanmış dizide. Sıralama yöntemlerimi analiz ediyor ve istediğin gibi çalıştığından emin olmalıyım.

+0

Ayrıca bunları tek tek test ettim ve iyi çalışıyorlar. Kopya hatalarını yakalayamıyorum, kopyayla ve neden olmadan kontrol edip onu kontrol ettiğimde tüm elemanları sıralayarak tüm öğeleri sıraladımAlgorithm dizide bir değişiklik yok, bu yüzden orijinal dizinin sonraki sortAlgorithm'ye geçtiğini düşünmeme izin ver. – kolboc

+0

Bize verdiğiniz şeyle, böyle olduğunu düşünüyorum, başka ne söyleyeceğimi bilmiyorum. AlgoritmTest'te belki de her çağrı için yeni bir dizi yaratan ve dizinin her seferinde (öğelerin aynı düzende olsa bile) taze olduğundan emin olun. Çünkü deterministik olmayan sıralama algoritmaları sıralama algoritmaları değildir. –

+0

tamam, yine de teşekkürler. – kolboc

İlgili konular