列表的有序归并算法

删除归并

def merge(mylist1,mylist2):
mylist=[]
while len(mylist1) > 0 and len(mylist2) > 0:
if mylist1[0] < mylist2[0]:
mylist.append(mylist1[0])
del mylist1[0]
elif mylist1[0] > mylist2[0]:
mylist.append(mylist2[0])
del mylist2[0]
# 相等 随便取一个 数据都删除
else:
mylist.append(mylist1[0])
del mylist1[0]
del mylist2[0]
# 针对长度不一样的类别的后续处理
mylist.extend(mylist1) # 将mylist1 接到mylist后面
mylist.extend(mylist2) # 将mylist2 接到mylist后面
return mylist


mylist1 = [11,25,13,44,15]
mylist1.sort()
print(mylist1)

mylist2 = [11,20,17,42,16,66,23]
mylist2.sort()
print(mylist2)
print(merge(mylist1,mylist2))

下标归并

def merge(mylist1,mylist2):
mylist=[]
i1 = 0
i2 = 0
while i1 < len(mylist1) and i2 < len(mylist2) :
if mylist1[i1] < mylist2[i2]:
mylist.append(mylist1[i1])
i1 += 1
elif mylist1[i1] > mylist2[i2]:
mylist.append(mylist2[i2])
i2 += 1
#想等 随便取一个 下标都加1
else:
mylist.append(mylist1[i1])
i1 += 1
i2 += 1

# 针对长度不一样的类别的后续处理
mylist.extend(mylist1[i1:]) # 将mylist1 接到mylist后面
mylist.extend(mylist2[i2:]) # 将mylist2 接到mylist后面
return mylist


mylist1 = [11,25,13,44,15]
mylist1.sort()
mylist2 = [11,20,17,42,16,66,23,56,3,7,6]
mylist2.sort()
print(merge(mylist1,mylist2))

猜你喜欢

转载自www.cnblogs.com/wang102030/p/9361991.html