Junior — Middle
Jak sloučit dva seřazené pole do jednoho, zachovávajíc pořadí prvků?
sobes.tech AI
Odpověď od AI
Pro sloučení dvou seřazených polí do jednoho seřazeného lze použít algoritmus sloučení, podobný tomu, který se používá v třídění sloučením (merge sort). Myšlenka je projít současně obě pole, porovnat aktuální prvky a přidat menší z nich do výsledného pole.
Příklad v 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++
}
}
// Přidat zbývající prvky
result = append(result, a[i:]...)
result = append(result, b[j:]...)
return result
}
Tato metoda pracuje v čase O(n + m), kde n a m jsou velikosti původních polí.