一尘不染

PHP的usort适用于哪种排序算法?

algorithm

我想按修改时间的升序和降序对文件进行排序。

根据这个答案,看起来最好的方法是定义排序回调函数并使用usort / uasort。

但是,由于我的应用程序的性质,对于某些排序算法(例如几乎反向排序的输入序列),我可能会遇到一些最坏的情况。

因为每个比较都使用两个部分在网络驱动器上的文件系统访问,所以比较的数量至关重要,必须将其最小化。其他种类的迭代可以更多。

那么PHP的数组排序函数使用什么排序算法?快速排序?多种排序?有什么办法可以配置这个吗?

我是否应该在排序之前对数组进行洗牌?

还是我需要编写自己的实现?

您知道一些很好的库,这些库提供具有可配置算法的排序功能吗?

您会建议使用哪种算法或方法来解决此最小化比较的问题?


阅读 195

收藏
2020-07-28

共1个答案

一尘不染

php.net/sort我发现这个:

注意:与大多数PHP排序功能一样,sort()使用»Quicksort的实现。

我相信它使用了一个
随机的quicksort
,因此不需要改组数组。

我做了一些测试,PHP的quicksort并不是随机的,所以请改组您的输入数组!

2020-07-28