从Scheme中的列表中查找最大的K数

时间:2015-05-19 03:07:07

标签: scheme lisp

我有一个方案中的对象列表。每个对象与可在运行时计算的置信度值相关联。我想找到具有最高置信度值的前50个这样的对象。 示例:((WordPair1) (WordPair2))等等是我的对象。

他们是随机订购的。我编写了一个函数,将这些WordPairs作为对象并返回置信度值。现在,我想找到具有最高置信度值的前50个这样的对象。

我可以找到具有最高置信度的对象,但我对如何找到前K个对象感到难过。

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

创建长度为50的优先级队列。插入输入流中出现的每个置信度值;如果新值小于50中的最小值,则让它落在优先级队列的底部。当您看到整个输入时,保留在优先级队列中的值将是最大的50。