Sıralamayı Birleştir
Bu meydan okumada, birleştirme sıralama birleştirme alt yordamını uygulayacak. Özellikle, her biri artan sırada sıralanmış ve bunları artan sırada sıralanmış tek bir listede birleştiren iki liste alan bir işlev veya program veya fiil veya benzeri oluşturmalısınız. Gereksinimler:
- Algoritmanız girişin boyutunda asimptotik olarak doğrusal bir zaman almalıdır. Lütfen O (n ^ 2) solüsyonları vermeyi bırakın.
- Bir listeyi sıralayabilen, bir listeyi birleştirebilen veya buna benzer herhangi bir yerleşik işlevi kullanamazsınız. Yazarın takdirine bağlı.
- Kod, tekrarlanan öğeleri işleyebilmelidir.
- Boş listeler için endişelenme.
Örnekler:
merge([1],[0,2,3,4])
[0,1,2,3,4]
merge([1,5,10,17,19],[2,5,9,11,13,20])
[1, 2, 5, 5, 9, 10, 11, 13, 17, 19, 20]
Bu kod golf , bu yüzden en kısa kod kazanabilir!
b=a;b=b.length
Demek istediğim : dizinin tamamını çoğaltabilir a
(ve her öğe için yürütüldüğünde O (n ^ 2) süresiyle sonuçlanabilir) veya yalnızca diziye (O (n) saat) başvuruyu çoğaltabilir. Hangisi önemlidir?