在Java中转置2D矩阵-Time&;空间复杂性?
这是我在主对角线上变换2D矩阵的算法/方法 之前:在Java中转置2D矩阵-Time&;空间复杂性?,java,time-complexity,big-o,complexity-theory,space-complexity,Java,Time Complexity,Big O,Complexity Theory,Space Complexity,这是我在主对角线上变换2D矩阵的算法/方法 之前: a L M d b G c N H K e F I J O P 之后: a b H I L G K J M c e O d N F P 我的代码: public class Matrix { static String[][] matrix = { {"a", "L", "M", "d"}, {"b", "G", "c", "N"}, {"
a L M d
b G c N
H K e F
I J O P
之后:
a b H I
L G K J
M c e O
d N F P
我的代码:
public class Matrix {
static String[][] matrix = {
{"a", "L", "M", "d"},
{"b", "G", "c", "N"},
{"H", "K", "e", "F"},
{"I", "J", "O", "P"}
};
public void transpose(String[][] matrix) {
String[][] transposedArray = new String [4][4];
for (int row =0; row < 4; row ++) {
for (int col = 0; col < 4; col++) {
transposedArray[row][col] = matrix[col][row];
}
}
}
}
公共类矩阵{
静态字符串[][]矩阵={
{“a”、“L”、“M”、“d”},
{“b”,“G”,“c”,“N”},
{“H”、“K”、“e”、“F”},
{“I”、“J”、“O”、“P”}
};
公共无效转置(字符串[][]矩阵){
字符串[][]TransposeArray=新字符串[4][4];
用于(int行=0;行<4;行++){
for(int col=0;col<4;col++){
transposderray[row][col]=矩阵[col][row];
}
}
}
}
这种方法的时间和空间复杂性是什么
是否有更好的最佳解决方案?算法的时间复杂度将为O(n)。如果传入16元素矩阵(4x4),则大约需要16个时间单位。如果传入一个100元素矩阵(10x10),大约需要100个时间单位 空间复杂度为O(n)——换句话说,所需的内存量与输入矩阵大小大致成正比。在你的例子中,你可以说它是O(2n)-因为它将占用大约两倍于你的输入矩阵(包括输入矩阵)的空间 我说“近似”的原因是,循环及其变量所需的额外时间和空间最小,但对于任何大小合理的输入矩阵,这些时间和空间都变得无关紧要