2015华为机试——称重小白鼠

【题目】N只小白鼠,每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色由枚举值MOUSE_COLOR定义。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示,请按照小白鼠的重量从小到大的顺序输出他们帽子的颜色,重量相同的小白鼠,排序后位置不变。
【详细描述】/*根据重量排序后,输出帽子颜色
* 举例: 5只小白鼠,重量分别为15 30 5 9 30,帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY,
* 则排序后的输出的帽子颜色序列应该为CL_BLUE, CL_YELLOW, CL_RED, CL_BLUE, CL_GRAY。
如果没有小白鼠,输出null。
输入参数:小白鼠数组
*/
public static MOUSE_COLOR[] sortMouse(Mouse[] mouse )
{
return null;
}
【举例】
5只小白鼠,重量分别为15 30 5 9 30,帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY,则排序后的输出的帽子颜色序列应该为CL_BLUE, CL_YELLOW, CL_RED, CL_BLUE, CL_GRAY。
public class Demo {

/*根据重量排序后,输出帽子颜色
* 举例: 5只小白鼠,重量分别为15 30 5 9 30,帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY,
* 则排序后的输出的帽子颜色序列应该为CL_BLUE, CL_YELLOW, CL_RED, CL_BLUE, CL_GRAY。
如果没有小白鼠,输出null。
输入参数:小白鼠数组

*/

    public static MOUSE_COLOR[] sortMouse(Mouse[] mouse )
    {

    if(mouse==null||mouse.length==0){
    return null;
    }

    else{
    MOUSE_COLOR[] mouse_color = new MOUSE_COLOR[mouse.length];
    //———–重量排序,从小到大——————-
    for(int j=0;jmouse[i].weight){
    Mouse temp = tmp;
    tmp = mouse[i];
    mouse[i] = temp;
    }
    }
    mouse[j] = tmp;
    }
    for(int i=0;i

      public enum MOUSE_COLOR {
      CL_RED,
      CL_BLUE,
      CL_BLACK,
      CL_WHITE,
      CL_YELLOW,
      CL_PINK,
      CL_GRAY
      }
      public class Mouse {
      public int weight;
      public MOUSE_COLOR color;

      public Mouse(int weight,MOUSE_COLOR color)
      {
      this.weight =weight;
      this.color = color;
      }
      }

    【想法】这道题当时做的时候总共提交了三次才正确,第一次是由于局限于单元测试中给定的5只小鼠,而把数组长度限定为5,第二次是对mouse[]==null和mouse.length==0没有考虑完全。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*