当前位置: 代码迷 >> J2EE >> 一个关于二维数组排序的有关问题
  详细解决方案

一个关于二维数组排序的有关问题

热度:154   发布时间:2016-04-22 02:32:07.0
一个关于二维数组排序的问题
这个题目搞得我头痛!请牛人来指教指教!
如下所示:
  总分 年龄
  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]);            }    }    }
------解决方案--------------------
探讨
这个题目搞得我头痛!请牛人来指教指教!
如下所示:
总分 年龄
620 22
649 43
700 34
580 18
700 25
700 21
649 21

题目的要求是这样的: 首先对总分进行升序排序,如果总分相等则对总分相对应的年龄进行升序排序,其他的年龄不动!
如:总分为700的年龄有3个分别为34,25,21,则要对这三个年龄进……

------解决方案--------------------
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());        }    }}
  相关解决方案