Junior — Middle
Kuidas saab kahe järjestatud jada ühendada nii, et tulemus jääks järjestatud?
sobes.tech AI
Vastus AI-lt
Et ühendada kaks sorteeritud järjestust üheks sorteeritud järjestuseks, saab kasutada ühendamise (merge) algoritmi, mis töötab lineaarse ajaga.
Idee:
- On kaks sorteeritud massiivi või nimekirja.
- Kasutame kahte näidikut, ühe iga massiivi jaoks.
- Võrdleme praeguseid elemente, väiksem lisame tulemusse ja liigume vastava näidiku suunas edasi.
- Korrame seda kuni mõlema massiivi läbimiseni.
Näide Kotlinis:
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++
}
}
// Lisame ülejäänud elemendid
while (i < a.size) result.add(a[i++])
while (j < b.size) result.add(b[j++])
return result
}