引出
最近在一个项目中, 需要对一个数组的顺序进行调整, 允许手动将某一个元素提到数组的开头位置....在这里, 使用了PHP中的usort函数进行了数组的排序, 代码大致如下:
usort($arr, function ($a, $b){
// 这里添加了 order 字段, 默认为0, 将order...但是, 我记得我之前也测试过, 数组顺序没有变化啊, 我尝试将数组的长度缩小为4, 突然发现, 是我错了.
分析
既然确定了usort函数是不稳定的排序, 那么他到底是如何进行排序的呢?...总结
再回想一下, 最开始的问题, 当数组长度小于4的时候, 顺序没有改变, 这个因为使用了稳定的插入排序....当数组长度100的时候, 使用了不稳定的快速排序.
之后使用usort函数, 就把他当做不稳定的就可以了. 这样基本不会有问题的. 但是, 讲话了, 如果我就是需要一个稳定的排序算法怎么办?