Sobes.tech
Junior — Middle

Эки сорттолгон тизмектин кандай жол менен бириктирсе болот, натыйжасы сорттолгон бойдон калсын?

sobes.tech AI

AIден жооп

Ики сортталган үзүндүңүздү бириктирүү үчүн, бириктүү (merge) алгоритмин колдонсо болот, ал сызыктуу убакытта иштейт.

Идея:

  • Ики сортталган массив же тизме бар.
  • Ар бирине эки көрсөткүч колдонобуз.
  • Учурдагы элементтерди салыштырабыз, кичүүсүн натыйжага кошуп, тиешелүү көрсөткүчтү жылдырабыз.
  • Эки массивди да өтүп бүткүчө кайталайбыз.

Котлин мисалы:

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
}