我正在尝试使用python实现mergeSort算法。该代码适用于带有数字的列表,但我希望它与枚举类一起使用。因此,该枚举类根据大小给不同类型的动物不同的编号。例如,蚂蚁是该类别中最小的动物,因此它排名第一。蓝鲸是该类别中最大的动物,因此它的排名为第十。
我希望我的功能mergeSort对那些动物进行编号排序,即使我输入的是动物名称列表。 L = [“熊猫”,“蚂蚁”,“犀牛”,“马”,“蓝鲸”,“猫”,“狗”,“老鼠”,“熊猫”]
class Animal(Enum):
Ant=1
Mouse=2
Hamster=3
Cat=4
Dog=5
Panda=6
Horse=7
Rhino=8
Elefant=9
Blue Whale=10
def sortMerge(a):
print('Mergesort, Parameter L:')
print(a)
if len(a)<=1: #base case
return a
leftList=a[:int(len(a)/2)]
rightList = a[int(len(a)/2):]
return merge(sortMerge(leftList),sortMerge(rightList))
def merge(leftList, rightList):
newList=[]
while leftList!=[]and rightList!=[]:
if leftList[0]<=rightList[0]:
newList.append(leftList[0])
leftList=leftList[+1:]
else:
newList.append(rightList[0])
rightList=rightList[+1:]
while leftList!=[]:
newList.append(leftList[0])
leftList=leftList[+1:]
while rightList!=[]:
newList.append(rightList[0])
rightList=rightList[+1:]
return newList
L=["Panda","Ant“,“Rhino“,“Horse“,“Blue Whale“,“Cat“,“Dog“,“Mouse“,“Panda"]
print("######MERGESORT######")
print(sortMerge(L))
这是我得到的结果:[“蚂蚁”,“蓝鲸”,“狗”,“猫”,“鼠标”,“犀牛”,“熊猫”,“熊猫”,“马”] 正确的结果应该是:[“蚂蚁”,“鼠标”,“猫”,“狗”,“熊猫”,“熊猫”,“马”,“犀牛”,“蓝鲸”]