Junior — Middle
Kako spojiti dve sortirane sekvence tako da rezultat ostane sortirani?
sobes.tech АИ
Одговор од АИ
Da biste spojili dve sortirane sekvence u jednu sortiranu, možete koristiti algoritam spajanja (merge), koji radi u linearnom vremenu.
Ideja:
- Postoje dve sortirane niza ili liste.
- Koristimo dva pokazivača, po jedan za svaki niz.
- Upoređujemo trenutne elemente, manji dodajemo u rezultat i pomeramo odgovarajući pokazivač.
- Ponavljamo dok ne prođemo oba niza.
Primer u Kotlinu:
fun mergeSortedLists(a: List<Int>, b: List<Int>): List<Int> {
val result = mutableListOf<Int>()
var i = 0
var j = 0
while (i < a.size && j < b.size) {
if (a[i] <= b[j]) {
result.add(a[i])
i++
} else {
result.add(b[j])
j++
}
}
// Dodajemo preostale elemente
while (i < a.size) result.add(a[i++])
while (j < b.size) result.add(b[j++])
return result
}