Junior — Middle
Ako zlúčiť dve zoradené polia do jedného, pričom zachováte poradie prvkov?
sobes.tech AI
Odpoveď od AI
Na zlúčenie dvoch zoradených polí do jedného zoradeného poľa možno použiť algoritmus zlúčenia, podobný tomu, ktorý sa používa v merge sorte. Myšlienka je prechádzať súčasne obe polia, porovnávať aktuálne prvky a pridávať menší z nich do výsledného poľa.
Prí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++
}
}
// Pridať zostávajúce prvky
result = append(result, a[i:]...)
result = append(result, b[j:]...)
return result
}
Táto metóda funguje v čase O(n + m), kde n a m sú veľkosti pôvodných polí.