如何理解lambda排序

规则定义

  • 如果a - b < 0,则a排在b前面,实现递增排序。

  • 如果a - b > 0,则a排在b后面。

  • 如果a - b == 0,则ab的顺序不变。

也就是说,如果为负值,则第一个在前,如果为正值,则第二个在前。

推论

这里我们不要去可以考虑 a 和 b 的大小关系,会把自己绕晕(因为有四种情况的同时还要去考虑位置关系,太绕了),而是去考虑 a 和 b 的相对位置关系,下面我们用代替 a 和 b 思考。

如果左 - 右 < 0,则最终位置左在前,此时不用调换位置

如果左 - 右 > 0,则最终位置右在前,此时需要调换位置,注意,此时原来左的元素变为了右,原来右的元素变为了左,如果忽略了这个变化,那么就会被这个问题绕进去,找不到统一规律。

无论是否调换位置,最后的结果一定满足不调换位置的位置关系,因为调换位置就是为了维持这个不调换位置的状态,即:左 < 右,递增。

如果要得到递减情况,那么lambda就是 b - a(右 - 左)

如果右 - 左 < 0,最终右在前,不用调换位置

如果右 - 左 > 0,最终左在前,调换位置。

最终均满足右 < 左,即递减。

统一记忆

无论左右都是小于0的时候位置关系不变,那么就以此为基准,得到最终大小关系:左<右(递增)或者右<左(递减)