我正在编写逻辑,以针对用户对象列表查找请求的前10个匹配项(包含8个属性)(用户对象具有请求中的每个属性的值)。我必须从这个用户对象列表中找到前10个匹配项。
我目前正在做的是:
像这样我继续遍历找到前10个匹配(5个属性匹配)。 每当我有MATCH_COUNT到10时,我就会打破循环,即使列表没有完全遍历
这种方法的问题是列表中的未反向用户对象可能有超过5个属性的匹配,但我没有遍历,因为我已经停止了。
那你有什么建议?这绝对涉及在到达MATCHES之前遍历整个列表,但我想不出有效的解决方案。
答案 0 :(得分:0)
答案 1 :(得分:0)
您应该使用quickselect和比较器来比较两个元素的匹配数。该算法以平均时间O(n)运行,这比排序所需的时间O(n log n)更好。