如何理解lambda排序
规则定义
-
如果
a - b < 0
,则a
排在b
前面,实现递增排序。 -
如果
a - b > 0
,则a
排在b
后面。 -
如果
a - b == 0
,则a
和b
的顺序不变。
也就是说,如果为负值,则第一个在前,如果为正值,则第二个在前。
推论
这里我们不要去可以考虑 a 和 b 的大小关系,会把自己绕晕(因为有四种情况的同时还要去考虑位置关系,太绕了),而是去考虑 a 和 b 的相对位置关系,下面我们用左和右代替 a 和 b 思考。
如果左 - 右 < 0,则最终位置左在前,此时不用调换位置
如果左 - 右 > 0,则最终位置右在前,此时需要调换位置,注意,此时原来左的元素变为了右,原来右的元素变为了左,如果忽略了这个变化,那么就会被这个问题绕进去,找不到统一规律。
无论是否调换位置,最后的结果一定满足不调换位置的位置关系,因为调换位置就是为了维持这个不调换位置的状态,即:左 < 右,递增。
如果要得到递减情况,那么lambda就是 b - a(右 - 左)
如果右 - 左 < 0,最终右在前,不用调换位置
如果右 - 左 > 0,最终左在前,调换位置。
最终均满足右 < 左,即递减。
统一记忆
无论左右都是小于0的时候位置关系不变,那么就以此为基准,得到最终大小关系:左<右(递增)或者右<左(递减)