YTU OJ C# 1616: 01串排序

YTU OJ C# 1616: 01串排序

在这里插入图片描述`

using System;
class Program
{
    
    
    static void Main(String[] agrs)
    {
    
    
        string[] num =new string[100];
        var i = 0;
        method method = new method();
        while (String.IsNullOrEmpty(num[i] = Console.ReadLine()) == false)
        {
    
    
            i++;
        }
        for (var a = 0; a < i - 1; a++)
        {
    
    
            for (var b = 0; b < i - 1; b++)
            {
    
    //冒泡排序
                string tomp;
                if (num[b].Length > num[b + 1].Length)
                {
    
    //判断长度
                    tomp = num[b];
                    num[b] = num[b + 1];
                    num[b + 1] = tomp;
                }
                else if (num[b].Length == num[b + 1].Length)
                {
    
    
                    var c = 0;
                    var d = 0;
                    c = method.contrast1(num[b], num[b + 1]);
                    if (c == 1)
                    {
    
    
                        tomp = num[b];
                        num[b] = num[b + 1];
                        num[b + 1] = tomp;
                    }
                    if (c == 2)
                    {
    
    
                        d = method.contrast1(num[b], num[b + 1]);
                        if (d == 1)
                        {
    
    
                            tomp = num[b];
                            num[b] = num[b + 1];
                            num[b + 1] = tomp;
                        }
                    }
                }
            }
        }
        for(var d=0;d<i;d++)
        {
    
    
            Console.WriteLine(num[d]);
        }
    }
}
class method
{
    
    
    public int contrast1(string str1,string str2)
    {
    
    //对比1的个数
        Char[] strn1 = str1.ToCharArray();
        Char[] strn2 = str2.ToCharArray();
        var sum1 = 0;
        var sum2 = 0;
        foreach (var x in strn1)
        {
    
    
            if (x == '1')
                sum1++;
        }
        foreach (var y in strn2)
        {
    
    
            if (y == '1')
                sum2++;
        }
        if(sum1>sum2)
            return 1;
        if (sum1 == sum2)
            return 2;
        return 0;
    }

    public int contrast2(string str1 ,string str2)
    {
    
    //对比ascll码值
        Char[] strn1 = str1.ToCharArray();
        Char[] strn2 = str2.ToCharArray();
        var sum1 = 0;
        var sum2 = 0;
        foreach (var x in strn1)
        {
    
    
            sum1 += x;
        }
        foreach (var y in strn2)
        {
    
    
            sum2 += y;
        }
        if (sum1 > sum2)
            return 1;
        return 0;
    }
}

猜你喜欢

转载自blog.csdn.net/henishu/article/details/115140155