首页 > 编程语言 >C# 简单实现 奇葩排序中的算盘排序(算珠排序)算法

C# 简单实现 奇葩排序中的算盘排序(算珠排序)算法

时间:2023-01-23 08:44:07浏览次数:42  
标签:suanpan arr di C# 算珠 len int 排序

Console.WriteLine("Hello World!");
            int[] arr = { 1, 3, 4, 0, 22, 4,0, 6, 3,10,8,6,7 };
            Console.WriteLine(string.Join("," ,arr.ToList()));
            int len = arr.Length;
            int maxCol = arr.Max();

            int [][]suanpan=new int[len][];

            for (int i = 0; i < len; i++)
            {
                suanpan[i] = new int[maxCol];
                for (int j = 0; j < arr[i]; j++)
                {
                    suanpan[i][j] = 1;
                }
            }

            /*
             从每列底部开始判断 向上填充
             
             */
            for (int i = 0; i < maxCol; i++)
            {
                
                int di = len - 1;
                int k = di;//当指向的值为0,则往上寻找
                while (k > -1)
                {
                    while (k > -1&&suanpan[k][i] != 1)//寻找每列为1的行坐标
                    {

                        k--;
                    }
                    if (k < 0)
                    {
                        break;
                    }

                    if (suanpan[k][i] == 1)//找到了
                    {
                        if (k == di)//相等说明,找到的是原来的,底部和k都上移一位
                        {
                            k -= 1;
                            di -= 1;
                        }
                        else
                        {
                            suanpan[di][i] = 1;//珠子往下移
                            suanpan[k][i] = 0;//移动后置为0
                            di -= 1;//填充了一位,底部往上移
                        }
                    }
                }

            }
            var sort = new int[len];
            for (int i = 0; i < len; i++)
            {
                sort[i] = suanpan[i].Sum();
            }
            Console.WriteLine(string.Join(",", sort.ToList()));
            Console.ReadKey();

 

标签:suanpan,arr,di,C#,算珠,len,int,排序
From: https://www.cnblogs.com/HelloQLQ/p/17064911.html

相关文章

  • [LeetCode] 2303. Calculate Amount Paid in Taxes
    Youaregivena 0-indexed 2Dintegerarray brackets where brackets[i]=[upperi,percenti] meansthatthe ith taxbrackethasanupperboundof upperi......
  • 第五十三章 使用 ^SystemPerformance 监视性能 - InterSystems IRIS Linux 平台性能数
    第五十三章使用^SystemPerformance监视性能-InterSystemsIRISLinux平台性能数据报告%SS-使用ALL^%SS命令在运行过程中采集了四个样本。Configuration*......
  • CS144-lab6-the IP router
    lab地址:lab6-doc代码实现:lab6-code1.目标lab6主要要实现一个路由的机制,首先互联网由多个局域网组成(不太严谨的说法),在lab5中我们只能支持在单个局域网中传递消......
  • 跨年比赛记录(CF1777 赛时+补题)
    赛时开赛前,跟某位朋友说窝可能不会A,结果就真犯了离谱错误,一会儿没写输入一会儿写错输出,竟然9min才过A......
  • JavaScript学习笔记—数组去重实例
    编写代码去除数组中重复的元素constarr=[1,2,1,3,2,2,4,5,5,6,7];//分别获取数组中的元素for(leti=0;i<arr.length;i++){//获取当前值后边的所有值f......
  • 【游记】NOI WC 2023线上
    摸鱼记录Day1:那一天记得只有开幕式,开幕式确实十分无聊,几个人在那里上台讲话,又有几个人在那里上台表演,看完开幕式,我认为就是浪费了一个小时。不过今年是NOI40周年,看着那......
  • JavaScript学习笔记—复制
    9.复制(1)浅拷贝(shallowcopy)通常对对象的拷贝都是浅拷贝只对对象的浅层进行复制(只复制一层)如果对象中存储的数据是原始值,那么拷贝的深浅是不重要浅拷贝只会对对象本......
  • ENGG1340 Computer Programming II
    课程内容笔记,自用,不涉及任何assignment,exam答案Notesforselfuse,notincludedanyassignmentsorexamsModule0主要介绍了几种远程登录CSdepartment主机的......
  • spring boot——请求与参数校验——重要概念——异常处理——@ControllerAdvice注解—
                packageorg.example.Exception;publicclassMyExceptionextendsRuntimeException{privateintcode;privateStr......
  • JavaScript 跨域问题
    一、什么是跨域跨域(Cross-originresourcesharing,CORS)是指在浏览器中,同源策略限制了来自不同域的脚本对每个网络资源的访问权限。同源策略限制了一个网页脚本只能......