意外的输出,数组排序

问题描述 投票:0回答:0

我的代码输出不符合预期

我试着回答了 Geektime挑战中的第三个问题

  • 编写一个函数,对正数列表(只有正数,没有负数)进行排序,使其达到最大数。例如,如果我们取数字:[50, 9, 1, 2],最大的数字将是 95021。

这是我的代码:


public class HelloWorld
{
    public static int Rec(int num1,int num2)
    {
        if(num1<10&&num2<10)
        {
            if(num1==num2)
                return 0;
            if(num1==Math.Max(num1,num2))
                return 1;
            return 2;
        }
        if(num1>10)
            num1/=10;
        if(num2>10)
            num2/=10;
        return Rec(num1,num2);
    }
    public static void SortMe(int[] arr)
    {
        for(int i=0;i<arr.Length-1;i++)
        {
            int check=Rec(arr[i],arr[i+1]);
            int temp1=arr[i];
            int temp2=arr[i+1];
            while(check==0&&(temp1>10||temp2>10))
            {
                if(temp1>10)
                    temp1%=10;
                if(temp2>10)
                    temp2%=10;
                check=Rec(temp1,temp2);
            }
            if(check==2)
            {
                int temp3=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=temp3;
            }
        }
    }
    public static void MaxNumber(int[] arr)
    {
        SortMe(arr);
        for(int i=0;i<arr.Length;i++)
            Console.Write(arr[i]);
    }
        public static void Main(string[] args)
    {
        //Console.WriteLine ("Hello Mono World");
        int[] arr=new int[4];
        arr[0]=50;
        arr[1]=9;
        arr[2]=188; 
        arr[3]=97;
        MaxNumber(arr);
    }
}

输出应该是:99750188,但它是:95097188。 为什么?我的代码有什么问题??

c# arrays sorting greatest-n-per-group
© www.soinside.com 2019 - 2024. All rights reserved.