12,11,18的排序你会不会?得到一个排序索引值,如12(0),11(1),18,(2)排序后得到11(1),12(0),18(2),括号内为索引。然后根据索引交换一下数组的行就行了!

解决方案 »

  1.   

    数据结构中有很多这类的算法,看看书就知道了,太多了。
      

  2.   

    实在不行,就是针对 12,11,18的冒泡排序,
    也是最容易理解的方法。
      

  3.   

    int rows=3,cols=5;int baseA[][] = new int[rows][cols];//要排序的数组
    public void sortByCol(int n){//按第n列排序
             //取出第n列的数据
    int sortByA[] = new int[rows];
    for(int i=0;i<rows;i++){
    sortByA[i] = baseA[i][n];
    }
    //对第n列进行排序,生成index数组
    int j=0,min=0;
    int indexA[]= new int[rows];
    for(int i=0;i<rows;i++){
    min=sortByA[i];
    for(int k=i;k<rows;k++){
    if(min>sortByA[k]){
    min=sortByA[k];
    index[i]=k;
    }
    }
    }
             //便于排序,把数据复制到另一个数组里
    int tempA[][]=new int[rows][cols];
    for(int i=0;i<rows;i++){
    for(int j=0;j<rows;j++){
    tempA[i][j]=baseA[i][j];
    }
    }
             //按照index数组,对base数组重新赋值
    for(int i=0;i<rows;i++){
    for(int j=0;j<cols;j++){
    int s=index[i];
    baseA[i][j]=tempA[s][j];
    }
    }
    }
      

  4.   

    没有时间调试,整体思路和楼上的差不多.