php - PHP 的 usort 适用于哪些排序算法?

标签 php algorithm sorting

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

根据这个answer看起来这可以通过定义排序回调函数并使用 usort/uasort 来实现。

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

因为每次比较都使用部分在网络驱动器上的两个文件系统访问,所以比较的次数很关键,必须尽量减少。其他种类的迭代可以更多。

那么 PHP 的数组排序函数使用什么排序算法呢?快排?多排序?有什么方法可以配置它吗?

我是否应该在排序之前打乱数组?

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

您知道一些提供带有可配置算法的排序函数的优秀库吗?

您会推荐什么算法或方法来解决这个最小化比较的问题?

最佳答案

php.net/sort 我发现了这个:

Note: Like most PHP sorting functions, sort() uses an implementation of » Quicksort.

我相信它使用了 randomized quicksort ,所以不需要对数组进行洗牌。

我做了some tests并且 PHP 的快速排序不是随机的,所以打乱你的输入数组!!

关于php - PHP 的 usort 适用于哪些排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907680/

相关文章:

c# - 将纪元时间戳转换为日期时间

algorithm - A* - 图遍历启发式

c++ - 用 vector 实现选择排序

python - Timsort 堆栈不变 - 为什么要尽可能延迟合并?

php - 在 AMPPS (OSX) 中为 PHP 设置 "$PATH"变量

php - 更改函数 php 内的全局变量引用

java - 对对象数组进行快速排序

python - 使用 lambda 对字典的元素进行排序

javascript - php echo 添加 "0' );</script>"到输出的末尾

algorithm - 确定最长的连续子序列