import Foundation
func mergeArrays(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
var merged: [Int] = []
merged.reserveCapacity(arr1.count + arr2.count) // efficient preallocation
var i = 0
var j = 0
// Merge while both arrays have elements
while i < arr1.count && j < arr2.count {
if arr1[i] < arr2[j] {
merged.append(arr1[i])
i += 1
} else {
merged.append(arr2[j])
j += 1
}
}
// Append remaining elements
if i < arr1.count {
merged.append(contentsOf: arr1[i...])
}
if j < arr2.count {
merged.append(contentsOf: arr2[j...])
}
return merged
}
let arr1 = [1, 3, 5, 7, 8, 9, 9]
let arr2 = [2, 3, 4, 5, 6, 9]
let result = mergeArrays(arr1, arr2)
print(result)
/*
run:
[1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 9]
*/