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

The*_*can 6 php sorting algorithm

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

根据这个答案,看起来最好定义一个排序回调函数并使用usort/uasort.

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

由于每次比较都使用两个部分在网络驱动器上的文件系统访问,因此比较次数至关重要,必须最小化.其他类型的迭代可以更多.

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

我可能在排序之前将数组洗牌吗?

或者我是否需要编写自己的实现?

你知道一些提供可配置算法排序功能的好库吗?

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

Mur*_*los 15

php.net/sort我发现这个:

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

我相信它使用随机快速排序,所以不需要改组阵列.

我做了一些测试,PHP的quicksort不是随机的,所以洗牌你的输入数组!


Dan*_*man 6

我使用PHP OpenGrok进行了一些搜索,并且只是基于对函数名称和浏览代码的一些看法,看起来usort是用quicksort实现的.

要最小化文件系统调用,请为阵列中的每个项目创建一次,并将结果存储在另一个阵列中.在比较器函数中使用第二个数组,而不是再次进行调用.

  • 那你为什么接受另一个答案,这个答案比我后面写的并说同样的话? (2认同)