矩阵转置
public class threeGroup {
private final int[] num = new int[30];
private final int[] pos = new int[30];
public static void main(String[] args) {
new threeGroup().control();
}
private void control(){
xx x = new xx();
x.setRowNum(6);
x.setColumnNum(6);
x.setNumN(8);
Init(x);
for(int i = 0;i < num.length;i++){
num[i] = 0;
pos[i] = 0;
}
{
x.cc[1].setRow(1);
x.cc[1].setColumn(2);
x.cc[1].setValue(12);
x.cc[2].setRow(1);
x.cc[2].setColumn(3);
x.cc[2].setValue(9);
x.cc[3].setRow(3);
x.cc[3].setColumn(1);
x.cc[3].setValue(-3);
x.cc[4].setRow(3);
x.cc[4].setColumn(5);
x.cc[4].setValue(14);
x.cc[5].setRow(4);
x.cc[5].setColumn(3);
x.cc[5].setValue(24);
x.cc[6].setRow(5);
x.cc[6].setColumn(2);
x.cc[6].setValue(18);
x.cc[7].setRow(6);
x.cc[7].setColumn(1);
x.cc[7].setValue(15);
x.cc[8].setRow(6);
x.cc[8].setColumn(4);
x.cc[8].setValue(-7);
}
count(x);
print();
System.out.println("\n\n\n| 转置前:");
put(x);
System.out.println("\n| 转置后:");
quickZhuanzhi(x);
}
private void put(xx x){
for(int i = 1;i <= x.getNumN();i++){
System.out.println("(" + x.cc[i].getRow() + "," + x.cc[i].getColumn() + "," + x.cc[i].getValue() + ")");
}
}
private void Init(xx x){
for(int i = 0;i < x.cc.length;i++){
x.cc[i] = new node();
}
}
private void zhuanzhi(xx x){
int min;
int z;
for(int i = 1;i <= x.getNumN();i++){
z = x.cc[i].getColumn();
x.cc[i].setColumn(x.cc[i].getRow());
x.cc[i].setRow(z);
}
for(int i = 1;i <= x.getNumN();i++){
min = i;
node d;
for(int j = i + 1;j <= x.getNumN();j++){
if(x.cc[min].getRow() > x.cc[j].getRow()){
min = j;
}else if(x.cc[min].getRow() == x.cc[j].getRow() && x.cc[min].getColumn() > x.cc[j].getColumn()){
min = j;
}
}
if(min != i){
d = x.cc[min];
x.cc[min] = x.cc[i];
x.cc[i] = d;
}
}
}
private void quickZhuanzhi(xx x){
xx b = new xx();
b.setRowNum(x.getColumnNum());
b.setColumnNum(x.getRowNum());
b.setNumN(x.getNumN());
Init(b);
int a,c;
for(int i = 1;i <= x.getNumN();i++){
c = x.cc[i].getColumn();
a = pos[c];
b.cc[a].setRow(x.cc[i].getColumn());
b.cc[a].setColumn(x.cc[i].getRow());
b.cc[a].setValue(x.cc[i].getValue());
++pos[c];
}
put(b);
}
private void count(xx x){
int a;
for(int i = 1;i <= x.getNumN();i++){
a = x.cc[i].getColumn();
num[a] += 1;
}
pos[1] = 1;
for(int i = 2;i <= x.getColumnNum();i++){
pos[i] = pos[i - 1] + num[i - 1];
}
}
private void print(){
for(int i = 1;i <= 6;i++){
System.out.print(num[i] + " ");
}
System.out.println();
for(int i = 1;i <= 6;i++){
System.out.print(pos[i] + " ");
}
}
}
final class xx{
node[] cc = new node[20];
private int rowNum;
private int columnNum;
private int numN;
public int getColumnNum() {
return columnNum;
}
public void setColumnNum(int columnNum) {
this.columnNum = columnNum;
}
public int getNumN() {
return numN;
}
public void setNumN(int numN) {
this.numN = numN;
}
public int getRowNum() {
return rowNum;
}
public void setRowNum(int rowNum) {
this.rowNum = rowNum;
}
}
final class node{
private int row;
private int column;
private int value;
public int getColumn() {
return column;
}
public void setColumn(int column) {
this.column = column;
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}