对两个列表合成一个列表后进行排序

lst1 = [2, 5, 7]
lst2 = [2, 4, 9, 0]
lst3 = lst1 + lst2
print(lst3)  # [2, 5, 7, 2, 4, 9, 0]
# print(sorted(lst1+lst2))
lst4 = []
i = 0  # 索引
min = lst3[0]  # 2

while len(lst3) > 0:      # i:    0  1  2  3  4  5  6  7
    if lst3[i] < min:  # lst[i]:  2  5  7  2  4  9  0
        min = lst3[i]     # min:  2  2  2  2  2  2  0  2
    i += 1                # len():7
    if i == len(lst3):    # lst4:                      [0]
                          # lst3:[2, 5, 7, 2, 4, 9]
        lst4.append(min)
        lst3.remove(min)
        if lst3:
            min = lst3[0]
        i = 0

print(lst4)

 

转载于:https://www.cnblogs.com/huangqihui/p/10635158.html

1. 对于两个无序表,可以使用快速排序、归并排序等算法进行排序,然后再使用归并算法合并两个有序表,得到一个有序表。 2. 对于已经有序的两个表,可以使用归并算法直接合并两个有序表,得到一个有序表。 具体实现方法如下: 1. 对于无序表的排序,可以使用快速排序算法,其基本思想是选定一个基准元素,将待排序的序列分成两个子序列,其中一个子序列中的元素全部小于基准元素,另一个子序列中的元素全部大于基准元素,然后递归地对子序列进行排序,最终得到一个有序序列。 2. 对于已经有序的两个表,可以使用归并算法将两个有序表合并一个有序表。归并算法的基本思想是将两个有序表合并一个有序表,具体实现方法使用两个指针分别指向两个有序表中的元素,然后比较两个元素的大小,将较小的元素放入新的有序表中,再将指针向后移动,直到其中一个有序表被遍历完,最后将另一个有序表中的元素全部加入新的有序表中。 3. 合并两个有序表的过程可以用迭代或者递归的方式实现,具体实现方法可以参考以下代码: 迭代方式: ```python def merge_sorted_lists(list1, list2): i = j = 0 merged_list = [] while i < len(list1) and j < len(list2): if list1[i] < list2[j]: merged_list.append(list1[i]) i += 1 else: merged_list.append(list2[j]) j += 1 merged_list += list1[i:] merged_list += list2[j:] return merged_list def merge_sort(unsorted_list): if len(unsorted_list) <= 1: return unsorted_list mid = len(unsorted_list) // 2 left_list = unsorted_list[:mid] right_list = unsorted_list[mid:] left_list = merge_sort(left_list) right_list = merge_sort(right_list) return merge_sorted_lists(left_list, right_list) ``` 递归方式: ```python def merge_sorted_lists(list1, list2): if not list1: return list2 if not list2: return list1 if list1[0] < list2[0]: return [list1[0]] + merge_sorted_lists(list1[1:], list2) else: return [list2[0]] + merge_sorted_lists(list1, list2[1:]) def merge_sort(unsorted_list): if len(unsorted_list) <= 1: return unsorted_list mid = len(unsorted_list) // 2 left_list = unsorted_list[:mid] right_list = unsorted_list[mid:] left_list = merge_sort(left_list) right_list = merge_sort(right_list) return merge_sorted_lists(left_list, right_list) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值