import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import com.wind.po.ColSortObj;
import com.wind.sort.SortByCol;
public class DataGridTool {
public int[][] datagird = null;
public int row=0;
public int col=0;
public DataGridTool() {
}
public DataGridTool(int[][] datagird) {
this.datagird = datagird;
this.row = datagird.length;
this.col = datagird[0].length;
}
public int[][] sortByCol(int sortCol, boolean isDesc) {
int[][] resDataGrid = new int[row][col+1];
List<ColSortObj> colSortObjList = getColInfo(sortCol);
Collections.sort(colSortObjList, new SortByCol(isDesc));
int line = 0;
for(ColSortObj colSortObj : colSortObjList) {
for(int i=0;i<35;i++) {
System.out.print(datagird[colSortObj.getRow()][i]+":");
resDataGrid[line][i] = datagird[colSortObj.getRow()][i];
}
resDataGrid[line][col] = colSortObj.getRow();//行号
line++;
System.out.print("\n");
}
return resDataGrid;
}
private List<ColSortObj> getColInfo(int col) {
List<ColSortObj> colSortObjList = new ArrayList<ColSortObj>();
int row = this.row;
for(int i=0;i<row;i++) {
ColSortObj colSortObj = new ColSortObj();
colSortObj.setRow(i);
colSortObj.setVal(datagird[i][col]);
colSortObjList.add(colSortObj);
}
return colSortObjList;
}
public static void main(String[] args) {
// generateData();
// intialDataGrid(170,35);//test
// long starttime = System.currentTimeMillis();
//// for(int i=0;i<100000;i++) {
// int[][] resDataGrid = sortByCol(1, true);
//// }
// long endtime = System.currentTimeMillis();
// System.out.println("time:::"+(endtime-starttime));
}
}
import java.util.Comparator;
import com.wind.po.ColSortObj;
public class SortByCol implements Comparator {
private boolean isDesc;
public SortByCol() {
}
public SortByCol(boolean isDesc) {
this.isDesc = isDesc;
}
public int compare(Object o1, Object o2) {
ColSortObj colSortObj1 = (ColSortObj) o1;
ColSortObj colSortObj2 = (ColSortObj) o2;
try {
if(isDesc) {
if (colSortObj1.getVal() <= colSortObj2.getVal())
return 1;
return -1;
} else {
if (colSortObj1.getVal() <= colSortObj2.getVal())
return -1;
return 1;
}
} catch (Exception e) {
return 0;
}
}
}
public class ColSortObj implements java.io.Serializable {
private int row;
private int val;
public ColSortObj() {
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}