思路
同合并有序链表
- 使用两个变量从0开始记录两个数组比较的元素下标
- 使用while循环比较两个数组中元素的大小(比较规则:如果数组A的下标a的元素比数组B的下标b的元素大,那么把b对应的元素放到新数组中,并让b += 1,反之a += 1),并把较小的放入新数组中
- 如果某个数组中的所有元素都被添加到了新数组中,那么直接将另一个数组中剩余的所有元素按序添加到新数组中
核心代码:
/// 测试合并有序数组
private func testMergeArray() {
let array1 = [1, 3, 5, 7, 9, 11, 14]
let array2 = [2, 4, 6, 8, 9, 10]
var array3 = [Int]()
var firstIndex = 0 // 第一个数组下标
var secondIndex = 0 // 第二个数组下标
while firstIndex <= array1.count - 1 && secondIndex <= array2.count - 1 {
if array1[firstIndex] > array2[secondIndex] {
array3.append(array2[secondIndex])
secondIndex += 1
} else {
array3.append(array1[firstIndex])
firstIndex += 1
}
}
if firstIndex == array1.count {
for i in secondIndex..<array2.count {
array3.append(array2[i])
}
} else {
for i in firstIndex..<array1.count {
array3.append(array1[i])
}
}
print("\(array3)")
}
网友评论