黑猫白猫
问题
一个数组,装着一些对象猫,猫有颜色属性,黑色和白色,问把所有白色猫放在黑色猫前面?如果有白、灰、黑,按白灰黑顺序排呢?
分析
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());
}
相关阅读
导语:如何充分的利用自媒体平台的推广-如果你只会用微信公众号做推广,那么你太OUT了。流量的时代逐渐转为内容时代,以前有流量就可以
PHP 警告 Warning: Unknown: Input variables exceede
警告全文是这样的:Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.
网上打字赚钱是真的吗?经常有网友问我这个问题,真真假假我也做过不少分析,相信很多人都看过。对于这个老生常谈的问题,就算分析的再怎
淘宝用户都是有会员等级之分的,划分的依据就是淘气值了,淘宝的超级会员享有一定的特权,最近比较火的活动就是88会员盛典了,成为超级会
君正X1000芯片是针对语音识别功能做了专门定制的芯片,可以支持4个MIC,支持远场唤醒,功耗很低,适用于物联网、智能家居、智能音频、智