合并两个有序数组为一个有序的大数组(时间复杂度最低)

xiaoxiao2021-02-28  44

【Python】合并两个有序数组为一个有序的大数组(时间复杂度最低)

思路

思路一: 先把两个数组放到一个新的数组中,再排序。 但是这样的没体现任何算法,这里考的不是快速排序等排序算法。关键应该是如何利用有序这个已知条件。 思路二: 按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环 假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。

代码

# encoding=utf-8 def merge_sorted_lists(aList, bList): result = [] length_of_aList = len(aList) length_of_bList = len(bList) i = 0 j = 0 while i < length_of_aList and j < length_of_bList: if aList[i] <= bList[j]: result.append(aList[i]) i += 1 else: result.append(bList[j]) j += 1 if i < length_of_aList: result.extend(aList[i:]) if j < length_of_bList: result.extend(bList[j:]) return result a = [1, 3, 6, 10] b = [0, 4, 5, 7, 10, 11, 14, 100] print merge_sorted_lists(a, b)

结果

[0, 1, 3, 4, 5, 6, 7, 10, 10, 11, 14, 100]

转载请注明原文地址: https://www.6miu.com/read-2632097.html

最新回复(0)