解决方案 »

  1.   

    你代码没贴全吧?cmp是一个方法,能list(cmp)这样写的?
      

  2.   

    if (a == b)
                    return 0;
                else if ((a == 5 && b == 4) || (a == 4 && b == 5))
                {
                    return b.CompareTo(a);
                }
                else
                    return (a - b);
      

  3.   


            public static int cmp(int a, int b)
            {
                if (b == 4)
                    return -1;
                return a.CompareTo(b);
            }
      

  4.   

    list.Where(x => x != 4).OrderBy(v=>v).ToList().Add(5);
      

  5.   

    更正,修正有多个4排序的问题        public static int cmp(int a, int b)
            {
                if (b == 4)
                    return -1;
                if (a == 4)
                    return 1;
                return a.CompareTo(b);
            }
      

  6.   


    因为需求是4,要排在最后。a, b, 分别是左边和右边,正常情况下a>b  返回 1(大于0的值)
    a == b 返回 0 
    a < b 返回 -1(小于0的值)那么再加上,我们要把4 排在最后,意味着,4是最大的数。那么当 b = 4时,我们就直接判定 a < b,所以返回 -1,这里隐含了一种情况,就是 a = 4 的时候,我们也判定为 a < b 了,但我这么做的目的是保持出现的顺序不变,也就是说,出现在左边的4,排序后也应该排列在左边。既然已经处理了 b = 4  的情况那么下面就考虑 a = 4 的情况,因为这时候 b 已经不可能为4了,所以一定有
    a  > b
    那就直接返回 1上面两种情况已经处理了所有4的可能,那么后面就按正常的排序方式就好。直接 return a.CompareTo(b) 就好了