返回

合并有序数组:揭开两个世界的和谐共存

前端

想象一下一个由数字组成的奇妙世界,那里有无数整齐排列的数组,守卫着自己独一无二的秩序。但在这个世界上,有时不同的世界相遇,需要和谐共存,融合成一个更大的、更有序的王国。这就是合并两个有序数组的迷人任务。

合并的艺术

合并有序数组是一种算法,它将两个有序数组融合成一个更大的有序数组。它像一支指挥家,巧妙地将两个旋律融合在一起,创造出一种新的、更加和谐的乐章。

步骤

合并两个有序数组的过程就像一场谨慎的舞蹈,每一步都至关重要:

  1. 初始化: 设置两个指针,分别指向每个输入数组的第一个元素。
  2. 比较: 比较两个指针指向的元素。
  3. 添加: 将较小的元素添加到合并后的数组中,并更新相应的指针。
  4. 推进: 继续比较和添加,直到其中一个输入数组用完。
  5. 复制剩余: 将剩余输入数组的元素直接添加到合并后的数组中。

优势

合并有序数组算法具有以下优势:

  • 有序性: 合并后的数组仍保持有序,满足输入数组的排序要求。
  • 效率: 合并操作一次只比较一个元素,时间复杂度为 O(m + n),其中 m 和 n 是输入数组的长度。
  • 简单: 算法易于理解和实现,无需复杂的额外数据结构。

代码示例

def merge_sorted_arrays(arr1, arr2):
    """
    合并两个有序数组

    参数:
    arr1 (list[int]): 第一个有序数组
    arr2 (list[int]): 第二个有序数组

    返回值:
    合并后的有序数组
    """

    merged_array = []
    i, j = 0, 0

    while i < len(arr1) and j < len(arr2):
        if arr1[i] < arr2[j]:
            merged_array.append(arr1[i])
            i += 1
        else:
            merged_array.append(arr2[j])
            j += 1

    while i < len(arr1):
        merged_array.append(arr1[i])
        i += 1

    while j < len(arr2):
        merged_array.append(arr2[j])
        j += 1

    return merged_array

实例

考虑两个有序数组:arr1 = [1, 2, 3] 和 arr2 = [4, 5, 6]。应用合并算法后,合并后的数组为 [1, 2, 3, 4, 5, 6]。两个有序世界和谐共存,创造出更大的秩序。