27 警察学院中的“堆”(第2/3页)

“就这样,Lambda教授、Babbleton教授和我,我们吵了一个多小时,Lambda教授根本没有权利来争夺,大家都心知肚明,但他固执地争了很久。终于只剩我和61年教龄的Babbleton教授在争吵。最后,我赢了,我逼迫只有11年教龄的Lambda去了我的旧办公室,有着61年教龄的Babbleton仍待在他原来那个办公室。

“Lambda教授把他的东西带到了我原来的办公室,但是那个可怜虫发现又有两个教授等着他,他们是我原先办公室楼下的两位教授,正在争取搬上来的机会。

“他们都比Lambda更有资格占用我原先的办公室,他们的教龄分别是40年和30年,这次他们没有吵得太厉害,Variable教授赢了,毕竟他工作了40年。

“不幸的Lambda教授又搬到了楼下,这次,Lambda办公室下一层的两位教授都比他年轻,我觉得他应该感到高兴,因为他赢了,他终于让其他教授吃了闭门羹。

“其实Lambda教授还是很幸运的,”Loop教授解释道,“他本想要占有顶层的办公室,却意外地搬到了办公楼中有较多年轻教授的一边,这使得他最终还是比之前上升了一层。规定只说过楼上的办公室的教授必须要比其楼下办公室的教授教龄更长。所以Lambda教授现在纯粹靠运气赢得了二楼的办公室,但是还有比他更长教龄的教授在一楼呢。”

Frank静静地等老教授把故事讲完,但老教授听起来好像有说不完的话,他试探地问道:“Loop教授,我可不可以占用您一点时间?我想问您一些问题。”

“当然可以,”Loop教授说,“我猜是关于这周的作业问题吧!”

Frank愣了一下,立刻回过神来,“什么?不是,我现在已经不是这里的学生了。”

“你现在还不是吗?那你应该考虑加入警队,这可是一个很光荣的职业。”

“我十年之前就毕业了。”

“是吗?”Loop教授耸了耸肩,“教书教久了,学生们都不记清了。”

“好吧,”Frank说,他绝望地找回刚被打乱的思路,“对了,我想知道关于安保的咒语。”

“哦,我并不教魔法,”Loop教授说,“我教的是巫师犯罪学,这是一门……”

“我上过您的课,”Frank打断道,“我不想知道如何施展咒语,我只想知道有哪些类型的安保咒语,尤其经常会在警局使用的。”

Loop教授的表情突然变得严肃起来。“这是非常敏感的信息,”她说,她的声音变得冰冷,“只有很少一部分人知道。”

“这也是我为什么来这里的原因。”Frank说。

“你到底为什么需要这个信息?”她问。

“我在调查首都警局的盗窃案。”他回答道,心里想:她先是胡言乱语地说了一通故事,现在居然又要盘问我?我时间可不多了。

“我需要看你的警徽。”Loop教授伸出手来。

Frank从他的披风口袋里找出私人侦探的徽章,扔在她的桌上。

“私人侦探?”Loop教授笑了笑,然后她的声音又变得非常强硬,“给我出去。”

“Loop教授……”Frank的声音被插销的上锁声打断。

警用算法导论:堆

节选自Drecker教授讲义

最大堆是基于二叉搜索树的数据结构,它的每个节点与其子节点之间需要时刻维持有序关系。具体来说,堆在存储元素时一定要遵循堆的特性,对于最大堆,树中的任意一个节点的值都要大于(或等于)其下面的所有节点。这种结构允许最大堆高效地支持几个非常重要的操作:(1)找到最大的元素,(2)删除最大的元素,(3)插入任意元素。这三个操作使得堆成为实现优先级队列的理想数据结构。