插入时的PHP排序数组

插入时的PHP排序数组,php,algorithm,sorting,Php,Algorithm,Sorting,我正在运行一个使用大量小查询来收集数据的流程。然后对结果进行排序并输出一个CSV文件 出于对多线程的兴趣,我希望在收集数据时对其进行排序。当采集完成后,我可以用O(1)读出数据 PHP是否有支持此功能的数据结构?您要查找的数据结构是一个二叉树,其中左子级小于父级,右子级大于父级。然后,一个简单的顺序遍历将在O(n)时间的末尾为您提供排序列表,这是最佳的。(或每个元件O(1)) 您不需要最小值堆,因为每次从堆中检索最小值时,您都需要花费O(log(n))时间才能检索下一个最小值项,这会导致总时间O

我正在运行一个使用大量小查询来收集数据的流程。然后对结果进行排序并输出一个CSV文件

出于对多线程的兴趣,我希望在收集数据时对其进行排序。当采集完成后,我可以用O(1)读出数据


PHP是否有支持此功能的数据结构?

您要查找的数据结构是一个二叉树,其中左子级小于父级,右子级大于父级。然后,一个简单的顺序遍历将在
O(n)
时间的末尾为您提供排序列表,这是最佳的。(或每个元件
O(1)

您不需要最小值堆,因为每次从堆中检索最小值时,您都需要花费
O(log(n))
时间才能检索下一个最小值项,这会导致总时间
O(nlog(n))
,这是您试图避免的

使用二叉树的困难在于必须确保树保持平衡。否则,对于每次插入,最坏情况下的时间复杂度为
O(n)
O(log(n))
已知最坏情况时间算法可在每次插入后保持树的平衡,但它不是最简单的算法。我做了一个快速的谷歌搜索,似乎已经有了PHP中的二叉树实现


这是我们所知道的事情背后的一般想法。

嗯,不是100%确定你在问什么。如果是PHP可以做多线程的话,我想这是不可能的。关于这个问题,这里有一个很好的问题。为了一些假设的
O(1)
您想要用
N
排序替换单个排序。当然,这不是一个优化。现在,我想说不,用php我认为可以达到O(n)。但是需要研究,在研究为什么不试试JAVA的同时,也有一些Python库。如果您得到任何解决方案,请在此处发布,以供参考。回答主题“仅在插入时使用PHP排序数组”。您可以使用SPL或Overview,也许最好将所有内容聚合到数据库中的新/temp表中,然后让它排序。