找出比较和排序多级数组的最佳方法的提示


Tips in finding out best way to compare and sort multi level arrays

所以我是一名程序员,对基于常规决策树的算法非常满意,甚至可以通过跳过计算中的额外步骤甚至稍微调整查询以使我们的应用程序更快来进行与小增强相关的优化。

面临的问题在算法上比我习惯的要复杂一些。这个想法是,我将拥有这个数据数组,比如说,一千个元素。数据数组的每个元素都是一个自己的数组,其中包含额外的 5-10 个元素。

我将为另一个数组,我必须从第一个找到最匹配的十个数组元素节点,并以最佳匹配顺序返回。

要可视化的一些示例数据:

假设值数组如下所示:

$arr = array(
  elm1 = 0.125,
  elm2 = 5
  elm3 = 200
);

数据数组将如下所示:

$array = array(
   [0] => array(elm1 => 1.5, elm2 => 8, elm3 => 10),
   [1] => array(elm1 => 0.5, elm2 => 4, elm3 => 100),
   ...etc..
);

现在的想法是,对于每个元素 [elm1、elm2、elm3 等],我将根据该元素在value array和每个data array nodes中的值的接近程度给出权重,然后基于此我需要提取十个最匹配的数据数组节点元素。

这在理论上看起来不错,但我担心处理时间,因为用户会实时等待。现在我不是一个数学大的人,即使我试图理解big(O)n(p)东西,它飞过我的头。

所以我正在寻找一个更外行的程序员解决方案,而不是深入研究算法复杂性的工作原理。我在想如果我创建了不同的数组,其中索引是 elm1、elm2 等,然后也许对这些数组中的每个数组进行排序并运行快速排序可能会有所帮助。我很想知道这个社区中的任何人将如何解决这样的问题。

任何指示都非常感谢!

免责声明:我不是PHP的人。

通常,或者从算法的角度来看,最好的解决方案是将二维数组中的数据保存在排序的地图集合中。我能够在PHP中找到SortedMap的实现。将所有数据插入到那里后,从第二个数组中搜索匹配的元素,将有一个对数或 O(log n(。

希望这有帮助...