首页 > 编程语言 > 详细

两个有序数组合并成一个有序数组

时间:2020-11-23 19:32:24      阅读:26      评论:0      收藏:0      [点我收藏+]

两种思路

  1. 定义一个新数组,长度为两个数组长度之和,将两个数组都copy到新数组,然后排序。
a = [1,2,3,5]
b = [4,6,7,8]
c=a+b
c.sort()
# c.sort(reverse = True)
print(c)
  1. 给两个数组分别定义一个下标,最大长度是数组长度减一,按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环,此时较短数组已经全部放入新数组,较长数组还有部分剩余,最后将剩下的部分元素放入新数组,大功告成。
def sumArray(list1,list2):
    result = []
    i,j = 0,0
    while i<len(list1) and j< len(list2):
        if list1[i]<list2[j]:
            result.append(list1[i])
            i += 1
        else:
            result.append(list2[j])
            j += 1
    # 此时较短的数组已经遍历过一遍。
    if i == len(list1):
        result = result + list2[j:]
    else:
        result = result + list1[i:]
    # print(i,j,len(list1),list1[i:],list2[j:])
    return result

list1 = [1,2,3,5]
list2 = [4,6,7,8]
print(sumArray(list1,list2))

两个有序数组合并成一个有序数组

原文:https://www.cnblogs.com/ygao/p/14026074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!