表上的多变量最大化

时间:2012-11-01 18:36:20

标签: algorithm pseudocode max minimum

我正在寻找一种简单的实现算法,该算法可以找到某个列上具有最大值的行。然后,它应该找到在该特定列上具有接近最大值的所有行(这两个步骤可以组合吗?)。然后,在选定的行中,我需要找到另一列上具有最小值的那个。

奖励:如果有多个这样的条目,我需要在另一列上找到具有最小值的行。

是的,我知道使用SQL(ite)很容易做到这一点,但我不想浪费时间将文本文件中的数据解析为数据库表...

我对如何做到这一点的简单想法感兴趣(伪代码很好),而且,现在,我只能想到一些相当复杂的东西:

  • 遍历所有行&找到最大值
  • 遍历所有行并插入列表中“最接近”的行
  • 在新的行列表中找到最小值

2 个答案:

答案 0 :(得分:1)

其实你做的是对的。除非您的行值已排序,否则您无法避免在步骤1中浏览所有值,因此您最终会花费O(R)时间,其中R是行数。

第二步,其成本也是O(R),因此不会降低算法的复杂性。

如果我们认为值“接近最大值”的数量相对于O(1)R,那么第三步是O(C)其中C是{{1}}列数。如果您的值未排序,则不能比做得更好,因为您需要测试所有值以找到最小值。

您的算法具有最佳复杂性

答案 1 :(得分:0)

我对此的看法:

  • 按照第一列(行方式)对表格进行排序
  • 最大值是此已排序列中的第一个或最后一个值
  • 附近的所有值都尽可能接近排序列中的最大值
  • 提取这些行
  • 在第二列上再次排序
  • 如上所述找到最小值......
  • 如果有多个此类条目,请再次使用第三列排序......

速度由使用的排序算法定义。