我正在编写逻辑,以便针对用户对象列表为请求(包含8个属性)查找前10个匹配项(用户对象对请求中的8个属性中的每个属性都有一个值)。我必须从这个用户对象列表中找到前10个匹配项。
我目前所做的是:
像这样,我继续遍历以找到前10个匹配(5个属性匹配)。每当我将MATCH_COUNT设置为10时,我就会中断循环,即使列表没有被完全遍历
这种方法的问题是列表中未遍历的用户对象可能有超过5个属性的匹配,但是我没有遍历,因为我已经停止了。
那你有什么建议?这肯定涉及到在到达比赛之前遍历整个列表,但我想不出一个有效的解决方案。
发布于 2015-05-24 15:50:29
发布于 2015-05-24 19:38:58
您应该在比较器中使用快速选择来比较两个元素的匹配数。该算法平均运行时间为O( n),优于排序所需的时间O(n log N)。
https://stackoverflow.com/questions/30425335
复制相似问题