golang中sort包中定义了排序需要的 Less 接口
函数签名为
func Less(i, j int) bool
之前不是很明确Less函数该怎么写,使用的时候总是试一下才能知道排序是否正确。今天把该问题明确一下。
Less函数的注释大意如下
Less 表明了第 i 个元素是否应该排在第 j 个元素之前。如果Less(i, j) 和 less(j, i)都是False,则认为这两个元素是相等的,Sort函数可能会以任何顺序保存结果,因为Sort函数不保证稳定性,稳定排序应使用StableSort。
Less 函数必须具有传递性,如果Less(i, j) 和 Less(j, k) 都是True, 则Less(i, k)一定是True。
同理,如果Less(i, j) 和 Less(j, k) 都是False,则Less(i, k)一定是False。
网友评论