这是《算法》一书中课后习题1.1.13的习题
这里涉及到的几个知识点
1. 二维数组的定义,示例如主函数中的arr二维数组定义并将其初始化
变量类型[][] 变量名 = new 变量类型[][];
example1:
int[][] arr =new int[][]{
{1,2,3},
{4,5,6}
};
example2:
int[] arr[] ={
{1,2,3},
{4,5,6}
};
example3:
int[][] arr = new int[M][N];
注意在上述中定义数组我首先声明了一个数组,然后将其初始化,因此不用指明数组的维数
如果在声明数组时没有指明维数那么系统会出现报错。像example4就会出错;
example3:
int[][] arr=new int[][];
2、二维数组的含义,arr[M][N]数组相当于M个一维数组,每个一维数组中存有N个元素。因此在获取一维数组的行数时,利用下面这个语句
arr[][]数组的行数=arr.length;
获取arr[M][N的列数利用下面这个语句
arr[][]列数=arr[m].length//m为0...M-1中任意取一个数
3、方法的格式
权限修饰符 static 返回值类型 方法名(参数类型 参数1,参数类型 参数3)
example:
public static int[][] exchange(int[][] arr)
在这个题目当中,因为返回值是时int型的二维数组所以返回类型为int[][]。
题目:编写一段代码,打印一个M*N的二维数组的转置
class Test1_1_5
{
public static void main(String[] args)
{
int[][] arr =new int[][]{
{1,2,3},
{4,5,6}
};
int[][] arr1=exchange(arr);//调用方法交换行和列
printArray(arr1);//打印数组
}
public static int[][] exchange(int[][] arr)
{
int[][] temp= new int[arr[0].length][arr.length];
for (int i=0;i<arr.length ;i++ )//行循环
{
for (int j=0;j<arr[i].length ;j++ )//列循环
{
temp[j][i]=arr[i][j];//交换元素
}
}
return temp;
}
public static void printArray(int[][] arr)//打印数组
{
for (int i=0;i<arr.length ;i++ )
{
System.out.print("{");
for (int j=0;j<arr[i].length ;j++ )
{
if (j<arr[i].length-1)
{
System.out.print(arr[i][j]+",");
}
else
System.out.println(arr[i][j]+"}");
}
}
}
}