问题

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

分析

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());}

【面试】黑猫白猫问题相关推荐

  1. 【面试】黑猫白猫原题

    问题 难度1:有一个数组,数组中存储的是 Cat 对象,每个 Cat 对象有多个成员变量,其中一个代表颜色 color,有两个值白色和黑色,要求编写一个函数将数组中所有的白猫都放到黑猫前面. 难度2: ...

  2. 开发三年,靠这份Java面试宝典,拿到字节offer

    前言 前几天由于工作的原因一直没怎么看私信,昨天在整理私信的时候看到了一个粉丝给我疯狂私信想要我帮忙整理一份大厂面试题,说自己工作也有几年了想跳槽冲刺一下,但是不知道该怎么做好前期准备.我看到这个粉丝 ...

  3. 三年开发的我,靠半年来刷的面试宝典,拿到了腾讯、阿里、字节offer!

    前言 前几天由于工作的原因一直没怎么看私信,昨天在整理私信的时候看到了一个粉丝给我疯狂私信想要我帮忙整理一份大厂面试题,说自己工作也有几年了想跳槽冲刺一下,但是不知道该怎么做好前期准备.我看到这个粉丝 ...

  4. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  5. Python 笔试面试合集

    Python 常见的 170 道面试题全解析:2019 版 全面剖析 Python 面试知识点 Python 全栈工程师必备面试题 300 道(2020 版) 2019 年最全 Python 面试题汇 ...

  6. C++ 笔记(33)— C/C++ 程序员常见面试试题深入剖析

    1. 找错题 试题1: void test1() {char string[10];char* str1 = "0123456789";strcpy(string, str1); ...

  7. 中信银行总行信息科技部笔试面试以及最后拿offer经历

    中信银行 提交简历 19年的招聘网站十分垃圾,提交只能用IE,感觉今年的招聘官网十分不错(ps:开发招聘官网的团队刚好去实习过一段时间,氛围不错,想了解的,可以介绍下的) 笔试 内容多,一般可能确实还 ...

  8. Redis常见面试问题汇总及解析

      面试后端开发的职位,相信大家经常被问到有关redis问题.Redis作为缓存系统的代表很有必要弄熟搞懂,无论是在工作当中还是求职面试过程中都是大有裨益的,本文将详细介绍一些redis的一些典型问题 ...

  9. ❤️手撕这十道HiveSQL题还不能吊打面试官,却能保你不被吊打❤️【推荐收藏】

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HiveSQL十题 第一题 1.需求 2.数据准备 3. ...

最新文章

  1. Python能让你上天?带你挖掘隐藏彩蛋~(附代码)
  2. Python爬虫偷懒神器 — 快速构造请求头!
  3. js双通信java,js和java的http通信
  4. 本地如何搭建FPT服务
  5. JEP:Java表达式分析器
  6. 【Google浏览器无法登录账号】为安全起见,您无法从此设备登录。请稍后重试,或从其他设备登录
  7. Janis—CCR闭循环系列探针台
  8. 怎么给pdf添加水印-四个简单步骤
  9. 数据分析师的薪资怎么样?
  10. 20162327WJH Android开发程序设计实验报告
  11. 【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字)
  12. dr优先级默认_OSPF路由器不能成为DR/BDR唯一的方法:DR优先级=0
  13. uniapp 网易云音乐app项目总结
  14. nslookup参数说明
  15. python 通达信数据_[转载]怎么样才能得到 07年08年的1分钟线数据呢,python 和 通达信可以...
  16. WordPress网站为什么及如何使用CDN加速访问
  17. Java年月的正则表达式_java如何判断是否为有效的年月日
  18. Java设计模式8,校验、审批流程改善神器,责任链模式
  19. bbt如何制作流程图_目前是产品助理,怎样才能形成自己的产品方法论?
  20. pvq真值表_真值表在命题教学中的几个应用

热门文章

  1. 第四章 eCallNG-eCall
  2. 访问链接提示“此网站无法提供安全连接”
  3. STM32开发实例 基于STM32单片机的畜牧大棚监测系统
  4. 学习学习再学习(一):学习意识
  5. 网上与微舆情差不的同款系统软件功能详解
  6. AI算法让图片动起来,特朗普和蒙娜丽莎深情合唱《Unravel》
  7. linux之文件管理
  8. 做手游联运项目,该如何选择靠谱的系统?
  9. 计算机毕业设计Node.js+Express人体健康数据管理平台(源码+程序+lw+远程调试)
  10. c语言if语句写在参数里,c语言ifthen语句