使用递减指针在数组中插入元素?

Inserting elements within an array, with decrementing pointer?

本质上,我试图将两个排序列表合并到一个列表中。我试图尽可能有效地做到这一点。 我试图用第二个数字列表替换零,并对它们进行排序。为了时间复杂性,我试图反向合并。不幸的是,在第一个插入语句 nums1.insert(j,nums2[-1]) 之后,元素 (6) 被插入倒数第二个索引,而不是最后一个索引(指针 j)。我将代码可视化,这就是我所看到的。我的预期输出(尽管我正在就地编辑数组并且不返回任何内容)是 nums1 = [1,2,2,3,5,6]。阵列必须保持相同的容量,不能是临时的。我觉得也许我没有正确地实施插入。我可以追加值,这在第一次迭代时解决了问题,但是我可以在指针 j 减少后在数组中间追加。感谢任何 help/advice!

def merge():

    nums1 = [1,2,3,0,0,0]
    m = 3
    nums2 = [2,5,6]
    n = 3
    i=m-1
    j=-1
        
    while nums2:
        #last element of nums1 and nums2 compared
        if nums1[i]<=nums2[-1]:
            #last element of list 2 is larger than last element of list 1
            nums1.pop(j)
            nums1.insert(j,nums2[-1])
            # pop the last value off of nums2
            nums2.pop()
            j-=1
    
            
        #last element of nums1 and nums2 compared    
        if nums1[i]>=nums2[-1]:
            #last element of list 2 is larger than last element of list 1
            nums1.insert(j,nums1[i])
            #pop off the value at current index, and replace it with the last element of nums2
            nums1.pop(i)
            nums1.insert(i,nums2[-1])
            #pop the last value off of nums2
            nums2.pop()
            j-=1
i+=1
merge()
def merge(n1,m,n2,n):
    k=m+n
    nn=n-1
    mm=m-1
    for i in range(k-1,-1,-1):
        if mm>=0 and nn>=0:
            if n1[mm]<n2[nn]:
                n1[i]=n2[nn]
                nn-=1
            else:
                n1[i]=n1[mm]
                mm-=1
        elif mm>=0:
            n1[i]=n1[mm]
            mm=-1
        else :
            n1[i]=n2[nn]
            nn-=1
    print(n1)
        




nums1 = [1,2,3,0,0,0]
m = 3
nums2 = [2,5,6]
n = 3
merge(nums1,m,nums2,n)