关于堆和优先级队列的问题

来源:4-2 堆的基本存储

烈焰卡卡

2019-04-21

突然好奇一个问题,网上没太能搜到满意的答案
就是了解了一下优先级队列的实现原理,通常是通过最大最小堆来实现的一个优先级队列。
但是想知道像优先级队列中,大部分元素的权值都相同时,如何保证既能够让优先级高的元素优先被取出,又能保证其余权值相同的元素,按照他们入队的顺序,按照(先入先出或先入后出)的规律出队?

写回答

1回答

liuyubobobo

2019-04-22

对于每一个元素,同时记录一下入队的顺序。


此时,相当于真正的权值是一个pair,包含weight和order两部分。weight不同,weight越大,权值越高;weight相同,order越小,权值越高:)


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程