我已经为列表实现了自定义排序功能。但在调用之后,列表的顺序似乎没有改变。
我想找到所有数字组合中最大的数字。例如,给540,9,它应该输出9540而不是5409.所以比较函数完成这项工作。
public void LargestPossibleNumberCombination(List<int> nums) {
nums.Sort(CustomCompare);
}
public int CustomCompare(int x, int y)
{
string a = x +""+ y;
string b = y + "" + x;
return a.CompareTo(b) > 0 ? 0 : 1;
}
答案 0 :(得分:1)
当x
小于y
(&lt; 0),y
小于x
(&gt; 0)时,您需要返回值等于(0)。
但是,您可以使用lambda比较使这种类型更紧凑:
nums.Sort((x, y) => string.Compare(string.Format("{0}{1}", y, x),
string.Format("{0}{1}", x, y)));
如果要在排序后加入列表:
var result = string.Join("", nums);