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 андозаи массивҳои воридотӣ мебошанд.