Sobes.tech
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
}