例:一个数组,int[] arr =new int[]{1022,1052,1084,1123,2007,2077,2129,3025,3062,3064,3066,3070,3101,3133  };
 规则:  各个数字按第一位数出现次数由多到少,第一位数递增或递减,后三位数字由小到大排列。
输出后是这样:
新数组:3025,2007,1022,3062,2077,1052,3064,2129,1084,3066,1123,3070,3101,3133
 
    
 

解决方案 »

  1.   

    排列规则优先级 第一位数出现次数由多到少>第一位数递增或递减>后三位数字由小到大排列
      

  2.   

    你给的例子 3出现7次 1出现4次 2出现3次 按照你在1#说的规则 第一位数出现次数由多到少>第一位数递增或递减>后三位数字由小到大排列那么顺序 应该是  3-》1-》2结果你例子的答案 是 3 -》 2 -》 1
      

  3.   

    排列规则优先级 第一位数出现次数由多到少>第一位数递增或递减>后三位数字由小到大排列你懂不懂中文?懂不懂>号什么意思?“都是并列条件”就更没规律可循了...先去把你的需求搞清楚了再说...
      

  4.   

    没看懂规律。
    但是排序可以直接用Sort方法, 不是可以传委托进去么。只要写比较规则就行了。
      

  5.   

    我写了个 不过效率有肯能低了点 呵呵 算法不很明白static void Main(string[] args)
            {
                int[] num = new int[] { 1022, 1052, 3025, 3064, 3066, 3070, 3062, 3101, 3133, 1084, 1123, 2007, 2077, 2129 };            int[] num1 = new int[num.Length];
                int[] num2 = new int[num.Length];
                int[] num3 = new int[num.Length];
                int j = 0, y = 0, n = 0;
                for (int i = 0; i < num.Length; i++)
                {
                    int um = int.Parse(num[i].ToString().Substring(0, 1));
                    if (um == 1)
                    {
                        num1[j] = num[i];
                        j++;
                    }
                    if (um == 2)
                    {
                        num2[n] = num[i];
                        n++;
                    }
                    if (um == 3)
                    {
                        num3[y] = num[i];
                        y++;
                    }
                }
                ArrayList list = new ArrayList();
                for (int p = 0; p < num.Length; p++)
                {
                    if (num3[p] != 0)
                    {
                        list.Add(num3[p]);
                    }
                    if (num2.Length > p && num2[p] != 0)
                        list.Add(num2[p]);
                    if (num1.Length > p && num1[p] != 0)
                        list.Add(num1[p]);            }
                for (int m = 0; m < list.Count; m++)
                    Console.Write("{0} ", list[m]);        }        private static void Sort(int[] list)
            {
                for (int i = 0; i < list.Length - 1; i++)
                {
                    int um = int.Parse(list[i].ToString().Substring(0, 1));
                    if (um == 3)
                    {
                        for (int j = 0; j < list.Length - 1 - i; j++)
                        {
                            if (list[j] > list[j + 1])
                            {
                                int temp = list[j];
                                list[j] = list[j + 1];
                                list[j + 1] = temp;
                            }
                        }
                    }
                }        }
      

  6.   

    至于排序的问题我看你的数据都是排好的 就没弄下面的Sort可以排序
     希望来高手能帮你解决