一、算法方案
- 两个指针分别指向两个数组,当其中一个小于另外一个就移动该指针,反之则移动另外一个指针
- 如果相等则均向后移动.
- 结束条件是,当任意一个数组的指针移到末尾则跳出循环
- 把另外一个数组没有比较完的部分直接放到新数组里
二、代码实现
func mergeSortedArray(_ a: [Int], b:[Int]) ->[Int] {
var i = 0
var j = 0
var ans = [Int]()
//合并数组
while i < a.count && j < b.count {
if a[i] > b[j] {
ans.append(b[j])
j += 1
}else if (a[i] == b[j]) {
ans.append(b[j])
j += 1
i += 1
}else {
ans.append(a[i])
i += 1
}
}
//数组a有未合并元素
while i < a.count {
ans.append(a[i])
i += 1
}
//数组b有未合并元素
while j < b.count {
ans.append(b[j])
j += 1
}
return ans
}