传入是什么回事
sorted([36, 5, 12, 9, 21], reversed_cmp)就是把reverse 代替了sorted 了吗
sorted([36, 5, 12, 9, 21], reversed_cmp)就是把reverse 代替了sorted 了吗
2016-05-25
错了, reversed_cmp只是判断它自己的两个参数,如x,y的关系。如果你觉得x应该在y的左边,那么就返回1, 如x = 1, y = 2 (你先从小到大排列顺序)。反之,reversed_cmp返回0(相等)或-1。sorted排序原理是,将两个数字比较,带到reversed_cmp中,如果为1,说名排序正确,不用交换位置,如果-1,则交换他们的位置。根据你的例子,第一次是比较[36, 5, 12, 9, 21]中的36和5(如果你想升序排), 那么reversed_cmp将会返回-1,sorted就会交换他们的位置,那么一个循环后,[36, 5, 12, 9, 21]变为[5, 36, 12, 9, 21],接下去继续比,可能是36和12比(根据具体算法),知道都比完。reversed_cmp就是给出一个是否交换的依据
举报