Python3合并两个有序数组代码实例
在 Python3 中,将两个有序数组合并成一个有序数组是一个常见问题。本文将提供两种代码实现方法,以及示例说明。
方法1:使用双指针
双指针方法是将两个数组从头部开始依次比较大小,将较小的数放入一个新数组中。
实现步骤如下:
- 初始化两个指针 i 和 j,分别指向两个数组的第一个元素
- 新建一个空数组 res,用于存储合并后的结果
- 依次比较两个指针所指向的元素,将较小的元素加入 res 中
- 将指向较小元素的指针往后移动一位
- 重复步骤3和4,直到将两个数组中的元素全部加入 res 中
- 返回 res
以下是代码实现:
def merge(nums1, m, nums2, n):
i, j = 0, 0
res = []
while i < m and j < n:
if nums1[i] <= nums2[j]:
res.append(nums1[i])
i += 1
else:
res.append(nums2[j])
j += 1
res += nums1[i:m]
res += nums2[j:n]
return res
示例:
nums1 = [1,2,3,0,0,0]
nums2 = [2,5,6]
m, n = 3, 3
result = merge(nums1, m, nums2, n)
print(result)
输出:
[1, 2, 2, 3, 5, 6]
方法2:使用 Python3 List 的 extend 方法
方法2是直接使用 Python3 List 提供的 extend 方法,将 nums2 和 nums1 合并,然后使用 Python3 List 提供的 sort 方法进行排序,最终得到一个合并有序的列表。
示例代码如下:
def merge2(nums1, m, nums2, n):
nums1[m:] = nums2[:n]
nums1.sort()
return nums1
示例:
nums1 = [1,2,3,0,0,0]
nums2 = [2,5,6]
m, n = 3, 3
result = merge2(nums1, m, nums2, n)
print(result)
输出:
[1, 2, 2, 3, 5, 6]
使用 List 的 extend 和 sort 方法简单易读,但是它的时间复杂度比双指针方法高,从而在处理大规模的数据时显得效率不高。
以上就是 “Python3合并两个有序数组代码实例”的完整攻略,其中包含两种不同的代码实现方法,每种方法都附带有示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3合并两个有序数组代码实例 - Python技术站