Middle — Senior
Jak implementovat sloučení dvou seřazených polí do jednoho seřazeného pole?
sobes.tech AI
Odpověď od AI
Pro sloučení dvou seřazených polí do jednoho seřazeného pole lze použít algoritmus sloučení podobný tomu, který se používá v třídění sloučením (merge sort).
Nápad:
- Procházet obě pole se dvěma indexy.
- Při každém kroku porovnat aktuální prvky a přidat menší do výsledného pole.
- Když jedno z polí skončí, přidat zbývající prvky druhé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
}
Tento algoritmus pracuje v čase O(n + m), kde n a m jsou velikosti vstupních polí.