1.Merge Two Sorted Arrays. py/合并排序有序数列

本文介绍了如何在Python中合并两个已排序的数组。通过比较数组元素并使用append()方法,将较小的元素添加到结果列表中,直到一个数组为空。这种方法确保了合并后的列表依然有序,但可能不是最优化的解决方案。
摘要由CSDN通过智能技术生成

首先一些note:

  •     and在python里是and,不是&&也不是&!
  •     加成员不是add(),应该用append()。一些list方法:https://docs.python.org/3/tutorial/datastructures.html
  •     我分不清python的array和list,感觉是一个东西,stackoverflow说python的基础数据结构没有array,array就是elemnet type全都一样的list。
===========================================================================
1. 如果不是两个array的长度加起来超过了一百万的话,直接用builtin sort 会比较快。
$ python make-figures.py --nsublists 2 --maxn=0x100000 -s merge_funcs.merge_26 -s merge_funcs.sort_builtin

StackOverFlow地址:Combining two sorted lists in Python


=============================================================================

2.我的想法:

    因为两个array都是顺序排列的,所以只需要把A的每一个成员和选中的B成员比,然后再加入新的result list C中就可以了。

    详细一点:

            先把A里面的每个数和B比较,如果A[i]<B[j]的话我们就一直加A[i]到result里,一直加到A[i]>=B[j]。

            这个时候就把B[j]加进result,再把B[j]往后移一位,继续用A[i]和它比。

            重复此步骤直到两个array中的一个( 最佳情况是两个一起)被loop完了。

            如果是只有其中一个被loop完了,就说明另外一个剩下的数肯定比result里的都大。直接加进去就好了。

class Solution:
    """
    @param A: sorted integer array A
    @param B: sorted integer array B
    @return: A new sorted integer array
    """
    def mergeSortedArray(self, A, B):
        # write your code here
        if not A:
            return B
        elif not B: 
            return A;
        
        result = []
        i,j = 0, 0
        
        while (i < len(A) and j < len(B)):
            if (A[i] < B[j]):
                result.append(A[i])
                i+=1;
            else:
                result.append(B[j])
                j+=1;
        
        while i < len(A):
            result.append(A[i])
            i+=1;
            
        while j < len(B): 
            result.append(B[j])
            j+=1;

        return result;
============================================================================


    这两者都应该不是最优解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值