称重小白鼠
题目标题:
-
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。
1 package huawei;
2
3 public final class Demo {
4
5 /*根据重量排序后,输出帽子颜色
6 * 举例: 5只小白鼠,重量分别为15 30 5 9 30,帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY,
7 * 则排序后的输出的帽子颜色序列应该为CL_BLUE, CL_YELLOW, CL_RED, CL_BLUE, CL_GRAY。
8 如果没有小白鼠,输出null。
9 输入参数:小白鼠数组
10
11 */
12 public static MOUSE_COLOR[] sortMouse(Mouse[] mouse )
13 {
14 Mouse[] mouse1 = mouse;
15
16 if(mouse==null||mouse.length==0)return null; //这个地方必须判断,而且要先判断是否为null,在判断是否为0,否则会有异常
17
18 //直接插入算法
19 for(int i=1;i<mouse1.length;i++) //从第2个元素开始遍历,遍历n-1遍
20 {
21
22 int j=i;
23
24 Mouse temp = mouse1[i];
25
26 while((j>0)&&(temp.weight<mouse1[j-1].weight)) {
27
28 mouse1[j] = mouse1[j-1];
29 j--;
30 }
31 mouse1[j] = temp;
32 }
33 MOUSE_COLOR [] colors = new MOUSE_COLOR[mouse1.length];
34
35 for(int i=0;i<colors.length;i++) {
36
37 colors[i] = mouse1[i].color;
38 }
39 return colors;
40 }
41 }
1 package huawei;
2
3 public class Mouse {
4 public int weight;
5 public MOUSE_COLOR color;
6 public Mouse()
7 {
8
9 }
10 public Mouse(int weight,MOUSE_COLOR color)
11 {
12 this.weight =weight;
13 this.color = color;
14 }
15 }
1 package huawei;
2
3 public enum MOUSE_COLOR {
4 CL_RED,
5 CL_BLUE,
6 CL_BLACK,
7 CL_WHITE,
8 CL_YELLOW,
9 CL_PINK,
10 CL_GRAY
11 }