Algorithm 表上的多变量最大化
我正在寻找一种简单易实现的算法,可以找到表中某一列上具有最大值的行。然后,它应该找到在该特定列上具有接近最大值的所有行(这两个步骤可以合并吗?)。然后,在选定的行中,我需要找到另一列上具有最小值的行 奖励:如果有几个这样的条目,我需要在另一列中找到具有最小值的行 是的,我知道使用SQL(ite)很容易做到这一点,但我不想浪费时间将文本文件中的数据解析到数据库表中 我对如何做到这一点的简单想法很感兴趣(伪代码很好),现在,我只能想到一些相当复杂的东西:Algorithm 表上的多变量最大化,algorithm,pseudocode,max,minimum,Algorithm,Pseudocode,Max,Minimum,我正在寻找一种简单易实现的算法,可以找到表中某一列上具有最大值的行。然后,它应该找到在该特定列上具有接近最大值的所有行(这两个步骤可以合并吗?)。然后,在选定的行中,我需要找到另一列上具有最小值的行 奖励:如果有几个这样的条目,我需要在另一列中找到具有最小值的行 是的,我知道使用SQL(ite)很容易做到这一点,但我不想浪费时间将文本文件中的数据解析到数据库表中 我对如何做到这一点的简单想法很感兴趣(伪代码很好),现在,我只能想到一些相当复杂的东西: 迭代所有行并查找最大值 迭代所有行,并在列
- 迭代所有行并查找最大值
- 迭代所有行,并在列表中插入“接近”最大值的行
- 在新的行列表中查找最小值
- 事实上,你做的事情是正确的。除非您的行值已经排序,否则无法避免在步骤1中遍历所有值,因此您将在其中花费
O(R)
时间,其中R
是行数
对于第二步,其成本也是O(R)
,因此不会降低算法的复杂性
如果认为“接近最大值”的值是<代码> o(1)< /代码>关于<代码> r>代码>,则第三步是
- 在第一列上按行对表格进行排序
- 最大值是此排序列中的第一个或最后一个值
- 所有接近的值都是排序列中尽可能接近最大值的值
- 提取那些行
- 在第二列上再次排序
- 找到最小值,就像上面一样
- 如果有多个这样的条目,请使用第三列再次排序
速度是由使用的排序算法决定的。是的,我很害怕。我并不担心复杂性,因为最多有3万行左右,但我必须重新设计我目前使用的愚蠢脚本:(好的,我刚刚意识到你根本不想解析数据。如果你仍然想用数组或其他类似的数据结构来解析,试试看:)似乎我无法避免对它进行解析,并在内存中再次检查它,所以,是的,解析它并将其插入有序列表似乎是一种不错的方法。谢谢这样做的速度是
O(nlogn)
,只有在同一列上进行至少log(n)
次相同的查询时才值得付出代价。这其实是个坏主意。@alestanis我讨厌在匆忙中做这样的事情。谢谢你指出复杂性。