Algorithm 表上的多变量最大化

Algorithm 表上的多变量最大化,algorithm,pseudocode,max,minimum,Algorithm,Pseudocode,Max,Minimum,我正在寻找一种简单易实现的算法,可以找到表中某一列上具有最大值的行。然后,它应该找到在该特定列上具有接近最大值的所有行(这两个步骤可以合并吗?)。然后,在选定的行中,我需要找到另一列上具有最小值的行 奖励:如果有几个这样的条目,我需要在另一列中找到具有最小值的行 是的,我知道使用SQL(ite)很容易做到这一点,但我不想浪费时间将文本文件中的数据解析到数据库表中 我对如何做到这一点的简单想法很感兴趣(伪代码很好),现在,我只能想到一些相当复杂的东西: 迭代所有行并查找最大值 迭代所有行,并在列

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

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

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

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

  • 迭代所有行并查找最大值
  • 迭代所有行,并在列表中插入“接近”最大值的行
  • 在新的行列表中查找最小值

    • 事实上,你做的事情是正确的。除非您的行值已经排序,否则无法避免在步骤1中遍历所有值,因此您将在其中花费
      O(R)
      时间,其中
      R
      是行数

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

      如果认为“接近最大值”的值是<代码> o(1)< /代码>关于<代码> r>代码>,则第三步是O(C)< /C> >其中代码> C>代码>为列数。如果您的值没有被排序,您将无法做得更好,因为您需要测试所有值以找到最小值

      您的算法具有您将获得的最佳复杂性

      我对这一点的看法:

      • 在第一列上按行对表格进行排序
      • 最大值是此排序列中的第一个或最后一个值
      • 所有接近的值都是排序列中尽可能接近最大值的值
      • 提取那些行
      • 在第二列上再次排序
      • 找到最小值,就像上面一样
      • 如果有多个这样的条目,请使用第三列再次排序

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

      是的,我很害怕。我并不担心复杂性,因为最多有3万行左右,但我必须重新设计我目前使用的愚蠢脚本:(好的,我刚刚意识到你根本不想解析数据。如果你仍然想用数组或其他类似的数据结构来解析,试试看:)似乎我无法避免对它进行解析,并在内存中再次检查它,所以,是的,解析它并将其插入有序列表似乎是一种不错的方法。谢谢这样做的速度是
      O(nlogn)
      ,只有在同一列上进行至少
      log(n)
      次相同的查询时才值得付出代价。这其实是个坏主意。@alestanis我讨厌在匆忙中做这样的事情。谢谢你指出复杂性。