个人认为,数组转数组什么的效率低下有很大一部分原因在与算法的编写,
目测来看,用源数组直接修改成目标数组会比直接生成新数组稍微复杂一些,
于是乎,写了个测试程序,大家来找茬,哈
import java.util.Random;
public class todo {
public static void showArray(int[][] array) {
int rows = array.length;
int cols = array[0].length;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
System.out.printf(" " + array[i][j]);
}
System.out.println();
}
System.out.println("-----------------");
}
public static void main(String[] args) {
final int N = 10;
final int M = 4;
int[][] n = new int[N][N];
int[][] z = new int[N - N / M][N - N / M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
n[i][j] = new Random().nextInt(10);
}
}
showArray(n);
// [Neo] TODO
int row = 0, col = 0;
LOOP: for (int i = 0; i < N; i++) {
if (0 != (i + 1) % M) {
for (int j = 0; j < N; j++) {
if (0 != (j + 1) % M) {
z[row][col] = n[i][j];
col++;
if (z[0].length == col) {
col = 0;
row++;
if (z.length == row) {
break LOOP;
}
}
}
}
}
}
showArray(z);
}
}
没什么特别的,就是稍微复杂点的逻辑判断而已,
截图奉上:
祝好,
斑驳敬上