MergeSort枚举类

时间:2019-06-25 15:17:52

标签: python list class enums mergesort

我正在尝试使用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))

这是我得到的结果:[“蚂蚁”,“蓝鲸”,“狗”,“猫”,“鼠标”,“犀牛”,“熊猫”,“熊猫”,“马”] 正确的结果应该是:[“蚂蚁”,“鼠标”,“猫”,“狗”,“熊猫”,“熊猫”,“马”,“犀牛”,“蓝鲸”]

0 个答案:

没有答案