2016-03-04 199 views
0

我已经为列表实现了自定义排序功能。但在调用它之后,列表的顺序似乎没有改变。自定义排序功能不起作用

我想找到来自所有数字组合的最大数字。例如给出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

你能在评论更加建设性的? – Yang

+0

我们无法猜出您想要达到的目标。请描述一下_number combination_的含义。你正在比较一个_string并置的numbers_。请至少提供一个示例输入和一个预期输出。 – ventiseis

+1

自定义排序功能在哪里? –

回答

1

你需要返回一个值时x小于y(< 0),当y小于x(> 0),是平等的,当(0)。

但是你可以使用拉姆达比较让这种更紧凑:

nums.Sort((x, y) => string.Compare(string.Format("{0}{1}", y, x), 
            string.Format("{0}{1}", x, y))); 

如果你想进行排序后,加入列表:

var result = string.Join("", nums); 
+0

优秀的一段代码! – Yang