def compare_iter(left,right= []):
res = []
while left and right:
min_value = left.pop(0) if left[0] < right[0] else right.pop[0]
res.append(min_value)
res.extend(left if left else right)
return res
def Merge_Iter(array):
#首先将array中的每个元素转换为列表,便于调用compare_iter方法
array = [[i] for i in array]
while len(array) >= 2 :#当array的元素只有1个时,此时所有元素排序完成。
#如果array的元素个数为奇数个数,则需要单独将最后1个元素拿出来作为新array的一个元素
if len(array) % 2 ==1:
last = array[-1]
array = [[array[2*i],array[2*i+1]] for i in range(len(array)//2)]
array.append(last)
# 如果array的元素个数为偶数个数,则按照顺序将相邻的两个元素归集到一个整体内,对于该整体
# 的两个元素适用compare_iter方法获得两个数组元素汇总排序后的整体。
else:
array = [[array[2*i],array[2*i+1]] for i in range(len(array)//2)]
# 由于循环条件即while循环的条件是array变量,即array每次循环都是改变的,为了使用array的元素