您的位置:首页 > 编程语言 > Java开发

java二维数组 初始化及使用其长度 &&二维数组中的查找 [转载]

2017-11-06 12:39 381 查看
java二维数组的初始化及使用其长度

[剑指Offer学习 面试题3 :二维数组中的查找](http://www.cnblogs.com/airycode/p/7754457.html)

java二维数组的初始化及使用其长度

二维数组的初始化

1.静态初始化

int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};

Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同

2.动态初始化

1) 直接为每一维分配空间,格式如下:

arrayName = new type[arrayLength1][arrayLength2];

int a[ ][ ] = new int[2][3];

2) 从最高维开始,分别为每一维分配空间:

arrayName = new type[arrayLength1][ ];

arrayName[0] = new type[arrayLength20];

arrayName[1] = new type[arrayLength21];

arrayName[arrayLength1-1] = new type[arrayLength2n];

3) 二维简单数据类型数组的动态初始化如下:

int a[ ][ ] = new int[2][ ];

a[0] = new int[3];

a[1] = new int[5];

对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。例如:

String s[ ][ ] = new String[2][ ];

s[0]= new String[2];//为最高维分配引用空间

s[1]= new String[2]; //为最高维分配引用空间

s[0][0]= new String(Good);// 为每个数组元素单独分配空间

s[0][1]= new String(Luck);// 为每个数组元素单独分配空间

s[1][0]= new String(to);// 为每个数组元素单独分配空间

s[1][1]= new String(You);// 为每个数组元素单独分配空间

在使用二维数组对象时,注意length所代表的长度,*数组名后直接加上length(如arr.length),所指的是有几行(Row);*指定索引后加上length(如arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目。

【剑指Offer学习】【面试题3 :二维数组中的查找】

package 二维数组查找;

public class Test03 {
/**
* 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
* 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
* <p/>
* 规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束:
* 如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。
* 也就是说如果要查找的数字不在数组的右上角,则每-次都在数组的查找范围中剔除)行或者一列,这样每一步都可以缩小
* 查找的范围,直到找到要查找的数字,或者查找范围为空。
*
* @param matrix 待查找的数组
* @param number 要查找的数
* @return 查找结果,true找到,false没有找到
*/
public static boolean find(int[][] matrix, int number) {

// 输入条件判断
if (matrix == null || matrix.length < 1 || matrix[0].length < 1) {
return false;
}

int rows = matrix.length; // 数组的行数
int cols = matrix[1].length; // 数组行的列数

int row = 0; // 起始开始的行号
int col = cols - 1; // 起始开始的列号

// 要查找的位置确保在数组之内
while (row >= 0 && row < rows && col >= 0 && col < cols) {
if (matrix[row][col] == number) { // 如果找到了就直接退出
return true;
} else if (matrix[row][col] > number) { // 如果找到的数比要找的数大,说明要找的数在当前数的左边
col--; // 列数减一,代表向左移动
} else { // 如果找到的数比要找的数小,说明要找的数在当前数的下边
row++; // 行数加一,代表向下移动
}
}

return false;
}

public static void main(String[] args) {
int[][] matrix = {
{1, 2, 8, 9},
{2, 4, 9, 12},
{4, 7, 10, 13},
{6, 8, 11, 15}
};
System.out.println(find(matrix, 7));    // 要查找的数在数组中

}
}


end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: