定义一个二维数组int[] ary={{2,5,1,0,6},{6,9,4,8,5},{3,6,4,7,5},{2,3,1,5,7}};
 有一个方法groupSort(int[][] ary,String groupNum){};
此方法的第一个参数接收一个数组,第二个参数接收一个字符串,此字符串表示按照二维数组的哪几列排序,以逗号隔开,如"0,2",排序后行内的值和顺序不能改变,
此功能娄似于数据库中的Group by 语名的作用.
请哪位高手指点哈,最好给出code for java or for C#都行.

解决方案 »

  1.   

    public ArrayList groupSort(int[][] ary,String groupNum)
    {
    ArrayList result = new ArrayList();
    if(groupNum != null && !"".equals(groupNum))
    {
    try{
    String []sortIndex = groupNum.split(",");
    for(int i=0; i< sortIndex.length;i++)
    {
    int colIndex = Integer.parseInt(sortIndex[i]);
    result.add(arr[i]);
    }

    }catch(Exception ex)
    {
    //
    }
    }

    return result;
    }
    没测试,不知道对不对,楼主就参考以下就行,详细的细节自己搞定吧,但愿别误导了你
      

  2.   

    二维数组int[] ary?
    是:int[][] ary
      

  3.   

    哦,笔误 是int[][] ary.各位有办法没有??
      

  4.   

    是按照什么排序?没讲清楚呀,是把他看成一个矩阵然后按列排序?那怎么一次提供给多于一个参数呀,比如说groupNum=“0,2”怎么即按第二列排又按第零列排?
      

  5.   

    import java.util.*;
    public class test {
    public static void main(String[] arg)throws Exception {
    int ary[][]={{2,5,1,0,6},{6,9,4,8,5},{3,6,4,7,5},{2,3,1,5,7}};
    sort2 s=new sort2("0213");
    Arrays.sort(ary,s);
    for(int[] a:ary) {
    for(int i:a) System.out.print(i+" ");
    System.out.println();
    }
    }
    }
    class sort2 implements Comparator<int[]>{
    private String ss;
    private static int ind=0;
    public sort2(String s){ss=s+"0";}
    public int compare(int a[], int b[]) {
    int r;
    if(a[Integer.parseInt(ss.substring(ind,ind+1))]>b[Integer.parseInt(ss.substring(ind,ind+1))])
    r=1;
    else if(a[Integer.parseInt(ss.substring(ind,ind+1))]<b[Integer.parseInt(ss.substring(ind,ind+1))])
    r=-1;
    else r=0;
    ind++;
    return r;
    }
    }
      

  6.   

    java,.net,asp,技术讨论群14401742,诚招高手加入,共同讨论,共同发展。