一个关于二维数组排序的有关问题
一个关于二维数组排序的问题
这个题目搞得我头痛!请牛人来指教指教!
如下所示:
总分 年龄
620 22
649 43
700 34
580 18
700 25
700 21
649 21
题目的要求是这样的: 首先对总分进行升序排序,如果总分相等则对总分相对应的年龄进行升序排序,其他的年龄不动!
如:总分为700的年龄有3个分别为34,25,21,则要对这三个年龄进行排序!其他的不变!要求用二维排序来做!
坐等牛人出现...
------解决方案--------------------
TreeSet compareTo …… 睡觉了 就不写代码了 给你个思路
------解决方案--------------------
来个粗糙版本 - -
这个题目搞得我头痛!请牛人来指教指教!
如下所示:
总分 年龄
620 22
649 43
700 34
580 18
700 25
700 21
649 21
题目的要求是这样的: 首先对总分进行升序排序,如果总分相等则对总分相对应的年龄进行升序排序,其他的年龄不动!
如:总分为700的年龄有3个分别为34,25,21,则要对这三个年龄进行排序!其他的不变!要求用二维排序来做!
坐等牛人出现...
------解决方案--------------------
TreeSet compareTo …… 睡觉了 就不写代码了 给你个思路
------解决方案--------------------
来个粗糙版本 - -
- Java code
public class TCharNum { public static void sort(int num[][]) { for (int i = 0; i < num.length; i++) { for (int j = i + 1; j < num.length; j++) { if (num[j][0] < num[i][0]) { int temp = num[j][0]; num[j][0] = num[i][0]; num[i][0] = temp; } else if (num[j][0] == num[i][0]) { if (num[j][1] < num[i][1]) { int temp = num[j][1]; num[j][1] = num[i][1]; num[i][1] = temp; } } } } } public static void main(String[] args) { int num[][] = {{600,22},{649,43},{700,34},{580,18},{700,25},{700,21},{649,21},{700,1}}; sort(num); for (int i = 0; i < num.length; i++) { System.out.println(num[i][0] + " " + num[i][1]); } } }
------解决方案--------------------
------解决方案--------------------
- Java code
public class Demo { private double point; private int age; public Demo(double point,int age){ this.point=point; this.age=age; } public double getPoint() { return point; } public void setPoint(double point) { this.point = point; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } import java.util.Arrays; import java.util.Comparator; public class Test { public static void main(String[] arg) { Demo[] demo=new Demo[7]; demo[0]=new Demo(620,20); demo[1]=new Demo(649,43); demo[2]=new Demo(700,34); demo[3]=new Demo(580,18); demo[4]=new Demo(700,25); demo[5]=new Demo(700,21); demo[6]=new Demo(649,21); Arrays.sort(demo,new Comparator<Demo>(){ public int compare(Demo o1, Demo o2) { if(o1.getPoint()<o2.getPoint()) return 1; else if(o1.getPoint()==o2.getPoint()){ if(o1.getAge()<o2.getAge()){ return 1; }else if(o1.getAge()==o2.getAge()){ return 0; }else return -1; }else return -1; } }); for(Demo d:demo){ System.out.println(d.getPoint()+" "+d.getAge()); } } }