YTU OJ C# 1616: 01串排序

33 篇文章 1 订阅
30 篇文章 0 订阅

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 ; a++)
        {
            for (var b = 0; b < i - 1-a; 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.contrast2(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码值
        var sum1 =Convert.ToInt32(str1,2);
        var sum2 = Convert.ToInt32(str2,2);
        if (sum1 > sum2)
            return 1;
        return 0;
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值