package 第五次作业;
import java.util.Arrays;
public class Matrix {
//声明一个矩阵类 Matrix,
//其成员变量是一个二维数组,
//数组元素类型为int,
//设计下面的方法,
//并声明测试类对这些方法进行测试
private int[ ][ ] matix;
public Matrix() {
super();
for(int i=0;i<10;i++) {
for (int j = 0; j < 10; j++) {
matix[i][j]=0;
}
}
}
public Matrix(int n) {
super();
for(int i=0;i<n;i++) {
for (int j = 0; j < n; j++) {
matix[i][j]=(int) Math.random();
}
}
}
public Matrix(int n,int m) {
super();
for(int i=0;i<n;i++) {
for (int j = 0; j < m; j++) {
matix[i][j]=(int) Math.random();
}
}
}
public Matrix(int table[][]) {
matix= table;
}
@Override
public String toString() {
return "Matrix [matix=" + Arrays.toString(matix) + "]";
}
package 第五次作业;
import java.util.Arrays;
public class Matrix_tst {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int [][] arr = new int[2][2];
for(int i =0;i<arr.length;i++) {
for(int j =0;j<arr.length;j++) {
arr[i][j]=1;
}
}
Matrix a = new Matrix();
Matrix b = new Matrix(2);
Matrix c = new Matrix(2,3);
Matrix d = new Matrix(arr);
System.out.println(a.toString());
System.out.println(b.toString());
System.out.println(c.toString());
System.out.println(d.toString());
}
}
}
这些10是干什么的,你没有那么多元素放进去不就空指针异常了么,Matrix 类这样改一下
import java.util.Arrays;
public class Matrix {
private int[ ][ ] matix;
public Matrix() {
super();
matix = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matix[i][j] = 0;
}
}
}
public Matrix(int n) {
super();
matix = new int[n][n];
for(int i=0;i<n;i++) {
for (int j = 0; j < n; j++) {
matix[i][j]=(int) Math.random();
}
}
}
public Matrix(int n,int m) {
super();
matix = new int[n][m];
for(int i=0;i<n;i++) {
for (int j = 0; j < m; j++) {
matix[i][j]=(int) Math.random();
}
}
}
public Matrix(int table[][]) {
matix= table;
}
@Override
public String toString() {
return "Matrix [matix=" + Arrays.deepToString(matix) + "]";
}
}
直观和简洁,在上面已经谈过了,这里主要想说,两者的复杂度如何!
上面举例,用的是同个数组,发现第一种需要交换三次,而第二种只需要交换两次,是不是意味着第二种更好呢?
有人确实有过这样的错觉,hhh,不记得在哪看到的了,应该是知乎或伯乐在线中的一个。
为什么我要说是错觉呢?是不是觉得,第一种解法,一个数字,可以被交换多次?而第二种解法,省了很多交换?(确实有点道理,不过不是真理就对了,且听下面分析)