Sobes.tech
Junior — Middle

Wie kann man zwei sortierte Sequenzen so zusammenfügen, dass das Ergebnis sortiert bleibt?

sobes.tech KI

Antwort von AI

Um zwei sortierte Sequenzen zu einer einzigen sortierten Sequenz zu verbinden, kann man den Merge-Algorithmus verwenden, der in linearer Zeit arbeitet.

Idee:

  • Es gibt zwei sortierte Arrays oder Listen.
  • Wir verwenden zwei Zeiger, einen für jedes Array.
  • Wir vergleichen die aktuellen Elemente, das kleinere wird zum Ergebnis hinzugefügt und der entsprechende Zeiger verschoben.
  • Wir wiederholen dies, bis beide Arrays durchlaufen sind.

Beispiel in Kotlin:

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++
        }
    }
    // Füge die restlichen Elemente hinzu
    while (i < a.size) result.add(a[i++])
    while (j < b.size) result.add(b[j++])
    return result
}