Sobes.tech
Middle — Senior

Чӣ тавр амалӣ кардани пайваст кардани ду массиви ба тартиб даровардашуда дар як массиви ба тартиб даровардашуда?

sobes.tech AI

Ҷавоб аз AI

Барои пайваст кардани ду массиви ба тартиб даромада ба як массиви ба тартиб даромада, метавонед алгоритми пайвасткунӣ, ки монанд ба он дар сорткунии бо ҳам пайваст (merge sort) истифода мешавад, истифода баред.

Ният:

  • Дар ҳарду массив бо ду индекс гузаред.
  • Дар ҳар қадам, элементҳои ҳозираро муқоиса кунед ва хурдтарро ба массиви натиҷа илова кунед.
  • Вақте ки яке аз массивҳо тамом мешавад, боқимондаи элементҳоро аз дигар массив илова кунед.

Масалан дар Go:

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

    // Илова кардани элементҳои боқимонда
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Ин алгоритм дар вақти O(n + m) кор мекунад, ки n ва m андозаи массивҳои воридотӣ мебошанд.