稀疏矩阵:矩阵中大量元素都是零
存储系数矩阵通常只存上三角或下三角
另一半的信息由已知信息推断
一,上三角a[4][4]
上三角对应的以为数组的下标:(2n-i+1)*i/2+j
二,下三角
上三角对应的以为数组的下标:(i+1)*i/2+j
一、数组
数组是多个相同类型数据的组合,实现对这些数据的统一管理。
数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。
1、一维数组声明
一维数组的声明方式:
type var[] 或 type[] var;
例如:
int a[];
int []a1;
double b[];
Mydate []c; //对象数组
Java语言中声明数组时不能指定其长度(数组中元素的数),
例如:int a[5]; //非法
2、创建基本数据类型数组
Java中使用关键字new创建数组对象
创建基本数据类型一维数组对象
public class Test{
public static voidmain(String args[]){
int[] s;
s = new int[10];
for ( inti=0; i<10; i++ ) {
s[i] =2*i+1;
System.out.println(s[i]);
}
}
}
3、数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
例如:
public class Test {
public static void main(String argv[]){
int a[]= new int[5];
System.out.println(a[3]); //a[3]的默认值为0
}
}
对于基本数据类型而言,默认初始化值各有不同
对于引用数据类型而言,默认初始化值为null(注意与0不同!)
4、数组元素的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:
数组名[数组元素下标]
数组元素下标可以是整型常量或整型表达式。
如a[3], b[i] ,c[6*i];
数组元素下标从0开始;长度为n的数组合法下标取值范围:0 —>n-1;
如inta[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]l每个数组都有一个属性length指明它的长度,
例如:a.length指明数组a的长度(元素个数)数组一旦初始化,其长度是不可变的
二、多维数组
1、 二维数组[][]:数组中的数组
格式1(动态初始化):int[][] arr =new int[3][2];
定义了名称为arr的二维数组,二维数组中有3个一维数组,每一个一维数组中有2个元素,一维数组的名称分别为arr[0], arr[1], arr[2],给第一个一维数组1脚标位赋值为78写法是:arr[0][1]= 78;
格式2(动态初始化):int[][] arr =new int[3][];
二维数组中有3个一维数组。每个一维数组都是默认初始化值null (注意:区别于0),可以对这个三个一维数组分别进行初始化。
arr[0] =new int[3]; arr[1] =new int[1]; arr[2] =new int[2];
注:int[][]arr = new int[][3]; //非法
格式3(静态初始化):int[][] arr =new int[][]{{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组,二维数组中有三个一维数组,每一个一维数组中具体元素也都已初始化,第一个一维数组 arr[0] ={3,8,2};第二个一维数组arr[1] ={2,7};第三个一维数组arr[2] ={9,0,1,6}; 第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[];x是一维数组,y是二维数组。
Java中多维数组不必都是规则矩阵形式。
2、数组元素的排序
数组排序
插入排序
直接插入排序、折半插入排序、Shell排序
交换排序
冒泡排序、快速排序(或分区交换排序
选择排序
简单选择排序、堆排序
归并排序
基数排序
3、排序方法的选择
若n较小(如n≤50),可采用直接插入或直接选择排序。当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插入,应选直接选择排序为宜。
若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;
若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
4、冒泡排序
排序思想:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。
5、数组排序
java.util.Arrays类的sort()方法提供了数组元素排序功能:
importjava.util.*;
publicclass Sort {
publicstatic void main(String[] args){
int[] number = {5,900,1,5,77,30,64,700};
Arrays.sort(number);
for(inti= 0; i< number.length;i++){
System.out.println(number[i]);
}
}
}
6、操作数组的工具类:Arrays
java.util.Arrays类包含了用来操作数组(比如排序和搜索)的各种方法。Arrays拥有一组static方法。
7、数组操作常见问题
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
- fill():将值填入array中。
- sort():用来对array进行排序。
- binarySearch():在排好序的array中寻找元素。另:System.arraycopy():array的复制。
arr引用没有指向实体,却在操作实体中的元素时。注意:编译时,不报错!!
- 数组脚标越界异常(ArrayIndexOutOfBoundsException)int[] arr =new int[2];System.out.println(arr[2]);访问到了数组中的不存在的脚标时发生。
- 空指针异常(NullPointerException)int[] arr = null;System.out.println(arr[0]);
感谢您关注 QQ:1418866575 关注我,让成长跑得更快点。
稀疏矩阵:矩阵中大量元素都是零
存储系数矩阵通常只存上三角或下三角
另一半的信息由已知信息推断
一,上三角a[4][4]
![]()
上三角对应的以为数组的下标:(2n-i+1)*i/2+j
二,下三角
![]()
上三角对应的以为数组的下标:(i+1)*i/2+j
转载于:https://www.cnblogs.com/excellencesy/p/8647473.html
java二维数组练习题
精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 java二维数组练习题 1) 数组的元素通过来访问,数组Array的长度为。
2) 数组复制时,”=“将一个数组的传递给另一个数组。
3) 没有显式引用变量的数组称为数组。
4) JVM将数组存储在中。
5) 数组的二分查找法运用的前提条件是数组已经。
6) 矩阵或表格一般用维数组表示。
7) 如果把二维数组看成一维数组,那么数组的元素是数组。
8) Java中数组的下标的数据类型是。
9) 不用下标变量就可以访问数组的方法是。
10) 数组最小的下标是。
11) arraycopy的最后一个参数指明。
12) 向方法传递数组参数时,传递的是数组的。
13) 线性查找法的平均查找长度为。
14) 数组初始化包括。
15) 数组下标访问超出索引范围时抛出异常
16) 浮点型数组的默认值是。
17) 对象型数组的默认值是。
18) 对象类型的数组虽然被默认初始化,但是并没有构造函数。
19) 二维数组的行的长度不同。
20) 数组创建后其大小改变。
二选择题
1. 下面错误的初始化语句是___
A. char str[]=“hello”; B. char str[100]=“hello”;
C. char str[]={‘h’,’e’,’l’,’l’,’o’};D. char str[]={‘hello’};
2. 定义了一维int型数组a[10]后,下面错误的引用是___
A.a[0]=1; B.a[10]=2; C.a[0]=5*2; D.a[1]=a[2]*a[0];
3. 下面的二维数组初始化语句中,正确的是____
A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}};
C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0};
4. 引用数组元素时,数组下标可以是____
A.整型常量 B.整型变量 C.整型表达式 D.以上均可
5. 定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____
A.4B.25C. 18D. 17
6. 下列初始化字符数组的语句中,正确的是____
A. char str[5]=“hello”; B. char str[]={‘h’,’e’,’l’,’l’,’o’,’\0’};
C. char str[5]={“hi”}; D. char str[100]=““;
7. 数组在Java中储存在中
A.栈
main{ B.队列 C.堆 D.链表. 下面程序的运行结果是____
int x=30;
int[] numbers=new int[x];
x=60;
System.out.println;
}
A.60B.20C.30D.50
9. 下面 不是创建数组的正确语句
A.float f[][]=new float[6][6];
C.float f[][]=new float[][6];
10. 下面不是数组复制方法的是
A.用循环语句逐个复制数组
C. 用”=“进行复制
A.a 11. 数组a的第三个元素表示为 B.a[3]C.aD.a[2]
12. 当访问无效的数组下标时,会发生
A. 中止程序 B.抛出异常 C. 系统崩溃 D.直接跳过
13. 使用arraycopy方法将数组a复制到b正确的是
A. arraycopyB. arraycopy
C.. arraycopyD. arraycopy
14. 关于数组默认值,错误的是
A. char--’”u0000’ B. Boolean--trueC. float--0.0fD. int-- 0
15. 关于数组作为方法的参数时,向方法传递的是
A. 数组的引用B.数组的栈地址C.