#python中列表索引超出范围
import numpy as np
#给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
#请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列
# 输入数组元素,用逗号隔开,并将输入转换为整数列表
nums1 = list(map(int, input("请输入数组元素,用逗号隔开\n").split(',')))
nums2 = list(map(int, input("请输入数组元素,用逗号隔开\n").split(',')))
# 合并两个列表
#nums3 = nums1 + nums2
def merge(nums1, m, nums2, n):
# 初始化两个指针,i 指向 nums1 的有效数据末尾(m-1),j 指向 nums2 的末尾(n-1)
# k 指向 nums1 的末尾(m+n-1),用于存放合并后的数据
i, j, k = m - 1, n - 1, m + n - 1
# 当两个数组都还有未处理的数据时,进行比较并填充到 nums1 的末尾
while i >= 0 and j >= 0:
if nums1[i] >= nums2[j]:
nums1[k] = nums1[i]
i -= 1
else:
nums1[k] = nums2[j]
j -= 1
k -= 1
# 如果 nums2 还有剩余数据,直接将其复制到 nums1 的前面部分
while j >= 0:
nums1[k] = nums2[j]
j -= 1
k -= 1
# 打印合并后的列表
#print("合并后的列表:", nums3)
# 对列表进行排序并打印排序后的列表
#nums3.sort() # 使用 sort() 方法原地排序
m=3
n=2
merge(nums1,m,nums2,n)
print("排序后的列表:", nums1)