Sobes.tech
Junior — Middle

Как можете да обедините две сортирани последователности така, че резултатът да остане сортиран?

sobes.tech AI

Отговор от AI

За да обедините две сортирани последователности в една сортирана, можете да използвате алгоритъма за сливане (merge), който работи в линейно време.

Идея:

  • Има две сортирани масиви или списъка.
  • Използваме два указателя, по един за всеки масив.
  • Сравняваме текущите елементи, по-малкият добавяме към резултата и преместваме съответния указател.
  • Повтаряме, докато не преминем и двата масива.

Пример на 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++
        }
    }
    // Добавяме останалите елементи
    while (i < a.size) result.add(a[i++])
    while (j < b.size) result.add(b[j++])
    return result
}