Python 每日一题(合并排序列表数据)

Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。


题目:

   合并2个升序的整数列表A和B,形成一个排序后的列表。如:A=[1, 3, 5],B=[2, 4, 6, 8, 10],输出排序后的列表 [1, 2, 3, 4, 5, 6, 8, 10],并返回。

分析:

  1、遍历2个列表,比较2个列表中的数,将其添加至新的列表中。

  2、若短的列表遍历完,则长的列表继续循环向新的列表中添加剩余的数。

实现:

def merge_list(list1, list2):
    '''
        合并两个有序列表到新的列表中
    :param list1: 有序列表1
    :param list2: 有序列表2
    :return: 一个新的有序列表
    '''
    i, j = 0, 0       # 记录两个有序列表的索引
    new_list = []     # 存放有序列表的新列表
    while i < len(list1) and j < len(list2):  # 比较两个列表的值
        if list1[i] < list2[j]:        # 第1个列表中的数比第2个列表中的数大
            new_list.append(list1[i])
            i += 1
        else:                          # 第1个列表中的数比第2个列表中的数小
            new_list.append(list2[j])
            j += 1

    while i < len(list1):              # 短列表剩余的数添加至新列表中
        new_list.append(list1[i])
        i += 1

    while j < len(list2):              # 短列表剩余的数添加至新列表中
        new_list.append(list1[j])
        j += 1

    return new_list

A = [2, 4, 7]
B = [1, 3, 5, 7]
C = [2, 6]
print(merge_list(A, B))
print(merge_list(B, C))
print(merge_list(A, C))

结果:

[1, 2, 3, 4, 5, 7, 7]
[1, 2, 3, 5, 6, 7]
[2, 2, 4, 6, 7]

结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!

你可能感兴趣的:(Python,列表,算法,python,数据结构)