实际上我的排序算法有效,但有一个问题。我有一个名为 SortedItem 的类,其中包括def __init__(self, point, cost): self.coordinate = point self.cost = cost我还有优先级队列,它按成本对这个 SortedItem 进行排序:class PriorityQueue:def __init__(self): self.items = []def isEmpty(self): return self.items == []def sortComparatorByCost(self, item): return item.costdef enqueue(self, item): self.items.append(item) self.items.sort(key=self.sortComparatorByCost, reverse=True)def dequeue(self): return self.items.pop()def returnQueueAsString(self): queue_str = "" for eachItem in self.items: queue_str += str(eachItem) + " " return queue_strdef isQueueContainsElement(self, element): for eachElement in self.items: if eachElement[0] == element: return True return False问题出现在这里: - 我已经定义了一些添加队列的顺序。假设我将此对象添加到队列中:obj1 = SortedItem((1,0), 10))queue.enqueue(obj1)obj2 = SortedItem((2,0), 15))queue.enqueue(obj2)obj3 = SortedItem((2,1), 15))queue.enqueue(obj3)现在我必须按照这个顺序从队列中获取对象(obj1、obj2、obj3)。然而python内置的sort函数是这样对这些对象进行排序的:(obj1, obj3, obj2)(因为obj2和obj3的开销是一样的)我该如何解决这个问题。我的意思是如果 2 个对象的成本相同,我应该得到第一个添加的对象。请注意:我刚刚创建了一个简单的问题示例。如果您尝试此代码,您可能会按以下顺序获得对象:obj1、obj2、obj3
添加回答
举报
0/150
提交
取消