美文网首页
合并有序数组

合并有序数组

作者: 梁森的简书 | 来源:发表于2021-06-07 20:45 被阅读0次

    思路

    同合并有序链表

    1. 使用两个变量从0开始记录两个数组比较的元素下标
    2. 使用while循环比较两个数组中元素的大小(比较规则:如果数组A的下标a的元素比数组B的下标b的元素大,那么把b对应的元素放到新数组中,并让b += 1,反之a += 1),并把较小的放入新数组中
    3. 如果某个数组中的所有元素都被添加到了新数组中,那么直接将另一个数组中剩余的所有元素按序添加到新数组中

    核心代码:

    /// 测试合并有序数组
        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)")
        }
    

    demo地址:https://github.com/yangguanghei/studyDateStructure

    相关文章

      网友评论

          本文标题:合并有序数组

          本文链接:https://www.haomeiwen.com/subject/azfceltx.html