在这里, 使用了PHP中的usort函数进行了数组的排序, 代码大致如下:
usort($arr, function ($a, $b){
// 这里添加了 order 字段, 默认为0, 将order...大的提到前边
return $b['order'] - $a['order'];
});
但是, 今天我大哥突然告诉我, php的usort是不稳定的, 也就是在两个元素相等的情况下, 不能够保证两个元素的位置不变...但是, 我记得我之前也测试过, 数组顺序没有变化啊, 我尝试将数组的长度缩小为4, 突然发现, 是我错了.
分析
既然确定了usort函数是不稳定的排序, 那么他到底是如何进行排序的呢?...image-20200501221508974
再去 php_usort 函数看看:
static void php_usort(INTERNAL_FUNCTION_PARAMETERS, compare_func_t...当数组长度100的时候, 使用了不稳定的快速排序.
之后使用usort函数, 就把他当做不稳定的就可以了. 这样基本不会有问题的. 但是, 讲话了, 如果我就是需要一个稳定的排序算法怎么办?