2012-08-04 9 views

cevap

5

Çok yönlü birleştirme genellikle daha iyidir. Düşünün üç küçük dosyalar:

a1 
a2 
a3 

ve

b1 
b2 
b3 

ve son olarak

c1 
c2 
c3 

Eğer a ve b ile birleştirmek, biz (diyelim)

kalacaksın
a1 
b1 
a2 
b2 
b3 
a3 

ve

c1 
c2 
c3 

Son bir birleştirme sıralanmış liste oluşturmak, ancak bu son birleştirmede yine a ve b öğeleri ziyaret etmek nasıl fark ederdi. Bu, iki yönlü birleşmelerde savurgan olan yeniden birleşme. Bunun yerine yapabilecekleriniz

tek çok yönlü birleştirme olduğunu. Ancak, nasıl yaptığınıza dikkat edin. Özellikle, her bir imleci taranan ve minimum değere sahip olan saf çift döngüden kaçının. Bunun yerine bir min-yığın kullanın. Bu geri aşağı O(n log n) karmaşıklık getirecektir.

İlgili konular