我正在寻找一种易于实现的算法,该算法可以找到表中某一列具有最大值的行。然后,它应该找到值接近该特定列最大值的所有行(这两个步骤可以组合吗?)。然后,在选定的行中,我需要找到在另一列中具有最小值的行。
奖励:如果有多个这样的条目,我需要在另一列中找到具有最小值的行。
是的,我知道使用 SQL(ite) 很容易做到这一点,但我不想浪费时间将文本文件中的数据解析到数据库表中......
我对如何做到这一点的简单想法很感兴趣(伪代码很好),现在,我只能按照这些思路想到一些相当复杂的事情:
- 遍历所有行并找到最大值
- 遍历所有行并插入“接近”列表中最大值的行
- 在新的行列表中找到最小值
最佳答案
其实你做的是对的。除非您的行值已经排序,否则您无法避免在第 1 步中遍历所有值,因此您最终会在那里花费 O(R)
时间,其中R
是行数。
对于第二步,其成本也是 O(R)
,因此它不会降低算法的复杂性。
如果我们考虑相对于R
“接近最大值”的值的个数是O(1)
,那么第三步是O (C)
其中 C
是列数。 如果您的值未排序,您不能做得比这更好,因为您需要测试所有值才能找到最小值。
您的算法具有您将获得的最佳复杂度。
关于algorithm - 表格的多变量最大化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183419/