Sobes.tech
Junior — Middle

Ikki tartiblangan massivni qanday qilib birlashtirish mumkin, elementlarning tartibini saqlab qolgan holda?

sobes.tech AI

AIdan javob

Ikki tartiblangan massivni birlashtirish uchun, birlashtirish algoritmi, merge sortda qo'llaniladigan algoritmga o'xshash bo'lishi mumkin. G'oya shundan iboratki, ikkala massivni bir vaqtning o'zida o'tib, hozirgi elementlarni solishtirish va eng kichik bo'lganini natijaviy massivga qo'shish.

Go tilida misol:

func mergeSortedArrays(a, b []int) []int {
    result := make([]int, 0, len(a)+len(b))
    i, j := 0, 0

    for i < len(a) && j < len(b) {
        if a[i] <= b[j] {
            result = append(result, a[i])
            i++
        } else {
            result = append(result, b[j])
            j++
        }
    }

    // Qolgan elementlarni qo'shish
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Ushbu metod, original massivlarning o'lchamlariga qarab, O(n + m) vaqt ichida ishlaydi.