Sobes.tech
Middle — Senior

Kā īstenot divu sakārtotu masīvu apvienošanu vienā sakārtotā masīvā?

sobes.tech AI

Atbilde no AI

Lai apvienotu divus sakārtotus masīvus vienā sakārtotā masīvā, var izmantot apvienošanas algoritmu, kas līdzīgs tam, kas tiek izmantots apvienošanas šķirošanā (merge sort).

Ideja:

  • Pārlūkot abus masīvus ar diviem indeksiem.
  • Katrā solī salīdzināt pašreizējos elementus un pievienot mazāko rezultāta masīvam.
  • Kad viens no masīviem beidzas, pievienot pārējos elementus no otra masīva.

Piemērs Go valodā:

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++
        }
    }

    // Pievienot pārējos elementus
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Šis algoritms darbojas laikā O(n + m), kur n un m ir ievades masīvu izmēri.