之字形打印数组
package class_03;
public class Code_08_ZigZagPrintMatrix {
public static void printMatrixZigZag (int [][] matrix) {
int tR = 0 ;
int tC = 0 ;
int dR = 0 ;
int dC = 0 ;
int endR = matrix.length - 1 ;
int endC = matrix[0 ].length - 1 ;
boolean fromUp = false ;
while (tR != endR + 1 ) {
printLevel(matrix, tR, tC, dR, dC, fromUp);
tR = tC == endC ? tR + 1 : tR;
tC = tC == endC ? tC : tC + 1 ;
dC = dR == endR ? dC + 1 : dC;
dR = dR == endR ? dR : dR + 1 ;
fromUp = !fromUp;
}
System.out .println();
}
public static void printLevel (int [][] m, int tR, int tC, int dR, int dC,
boolean f) {
if (f) {
while (tR != dR + 1 ) {
System.out .print(m[tR++][tC--] + " " );
}
} else {
while (dR != tR - 1 ) {
System.out .print(m[dR--][dC++] + " " );
}
}
}
public static void main (String[] args) {
int [][] matrix = { { 1 , 2 , 3 , 4 }, { 5 , 6 , 7 , 8 }, { 9 , 10 , 11 , 12 } };
printMatrixZigZag(matrix);
}
}
回字形打印数组
package class_03;
public class Code_06_PrintMatrixSpiralOrder {
public static void spiralOrderPrint (int [][] matrix) {
int tR = 0 ;
int tC = 0 ;
int dR = matrix.length - 1 ;
int dC = matrix[0 ].length - 1 ;
while (tR <= dR && tC <= dC) {
printEdge(matrix, tR++, tC++, dR--, dC--);
}
}
public static void printEdge (int [][] m, int tR, int tC, int dR, int dC) {
if (tR == dR) {
for (int i = tC; i <= dC; i++) {
System.out .print(m[tR][i] + " " );
}
} else if (tC == dC) {
for (int i = tR; i <= dR; i++) {
System.out .print(m[i][tC] + " " );
}
} else {
int curC = tC;
int curR = tR;
while (curC != dC) {
System.out .print(m[tR][curC] + " " );
curC++;
}
while (curR != dR) {
System.out .print(m[curR][dC] + " " );
curR++;
}
while (curC != tC) {
System.out .print(m[dR][curC] + " " );
curC--;
}
while (curR != tR) {
System.out .print(m[curR][tC] + " " );
curR--;
}
}
}
public static void main (String[] args) {
int [][] matrix = { { 1 , 2 , 3 , 4 }, { 5 , 6 , 7 , 8 }, { 9 , 10 , 11 , 12 },
{ 13 , 14 , 15 , 16 } };
spiralOrderPrint(matrix);
}
}