必威体育Betway必威体育官网
当前位置:首页 > IT技术

【面试】黑猫白猫问题

时间:2019-08-09 10:42:12来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

黑猫白猫

问题

一个数组,装着一些对象猫,猫有颜色属性,黑色和白色,问把所有白色猫放在黑色猫前面?如果有白、灰、黑,按白灰黑顺序排呢?

分析

1、数组中元素是引用类型不是值类型

2、引用类型的元素只能交换位置,用到Array.Sort(),或者遍历交换索引i

解决

方法一:Array.Sort(Array,(n1,n2)=>n1.color.CompareTo(n2.Color));

方法二:手写排序方法

代码

方法一:

//白猫放在黑猫前面
namespace 黑猫白猫算法
{
    public enum SkinColor
    {
        白,黑
    }
    public class Program
    {
        static void Main(string[] args)
        {
            Cat[] CatArray = new Cat[]
            {
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白}
            };
            Array.Sort(CatArray,(n1,n2)=>n1.Color.CompareTo(n2.Color));
            foreach (Cat cat in CatArray)
            {
                console.WriteLine(cat.Color.ToString());
            }
        }
    }
    public class Cat
    {
        public SkinColor Color;
    }

方法二:

把白猫全部提到前面

 Cat[] CatArray = new Cat[]
            {
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.白},                
                new Cat{Color=SkinColor.黑},                
                new Cat{Color=SkinColor.白}
            };
            int nCount =CatArray.Length;
            int nLength = CatArray.Length;
            int nWhite = CatArray.Count((n) => n.Color == SkinColor.白);
            int nBlack = CatArray.Count((n) => n.Color == SkinColor.黑);
            for (int i = 0; i < nWhite; i++)
            {
                if (CatArray[i].Color != SkinColor.白)
                { 
                    for(int j=i+1;j<nCount;j++)
                    {
                        if (CatArray[j].Color == SkinColor.白)
                        {
                            Cat catTemp = CatArray[i];
                            CatArray[i] = CatArray[j];
                            CatArray[j] = catTemp;
                            break;
                        }
                    }
                }
            }

            foreach (Cat cat in CatArray)
            {
                Console.WriteLine(cat.Color.ToString());
            }

相关阅读

如何充分的利用自媒体平台做矩阵推广(100000+)

导语:如何充分的利用自媒体平台的推广-如果你只会用微信公众号做推广,那么你太OUT了。流量的时代逐渐转为内容时代,以前有流量就可以

PHP 警告 Warning: Unknown: Input variables exceede

警告全文是这样的:Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.

网上打字赚钱是真的吗?打字赚钱10000字50元?真相揭秘

网上打字赚钱是真的吗?经常有网友问我这个问题,真真假假我也做过不少分析,相信很多人都看过。对于这个老生常谈的问题,就算分析的再怎

淘宝超级会员怎么达到?需要把淘气值提到1000以上

淘宝用户都是有会员等级之分的,划分的依据就是淘气值了,淘宝的超级会员享有一定的特权,最近比较火的活动就是88会员盛典了,成为超级会

君正X1000芯片性能和处理器介绍

君正X1000芯片是针对语音识别功能做了专门定制的芯片,可以支持4个MIC,支持远场唤醒,功耗很低,适用于物联网、智能家居、智能音频、智

分享到:

栏目导航

推荐阅读

热门阅读