合并有序数组

2021-06-07  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读