数组是应用最普遍的数据存储结构。它被植入到大部分编程语言中。java
Java中数组的基础知识算法
建立数组
编程
在Java中把它们看成对象来对待,所以在建立数组是必须使用new操做符:数组
int[] intArray; //defines a reference to an array ingArray = new int[100]; //creates the array, and //sets int Array to refer to it //或使用等价的单语句声明的方法: int[] int array = new int[100];
数组是一个对象,因此它的名字(前面程序中intArray)是数组的一个引用;它并非数组自己。数组存储在内存中的其余地址中,而intArray仅仅保存着这个地址。数组有一个length字段,经过它能够得知当前数组大小(数据项的个数);
编程语言
int arrayLength = intArray.length; //find array size
一旦建立数组,大小便不可改变。spa
访问数组数据项设计
数组数据项经过方括号中的下标来访问。
code
temp = intArray[3]; //get contents of fourth element of array intArray[7] = 66; //intsert 66 into the eighth cell
初始化
对象
当建立整型数组以后,不另行指定那么数组会自动初始化为空。
接口
除非将特定的值赋给数组的数据项,不然它们一直是特殊的null对象。
使用下面的语法能够初始化一个基本类型的数组:
int[] intArray = {1,3,45,23,123,122,56};
数组的大小是由数据列表中的数据项决定的;大小固定不可改变;
有序数组的Java代码
下面讨论一下有序数组的Java代码,它使用OrdArray类来封装数组和它的算法。类的核心是find()方法,通脱二分查找类定位一个特定的数据项。
小结
Java中的数组是对象,由new操做符建立;
无序数组能够提供快速的插入,但查找和删除较慢;
将数组封装到类中能够保护数组不随意更改;
类的接口类用户能够访问的方法(有时还有字段)组成;
类的接口被设计成使类用户操做更加简单;
有序数组能够使用二分查找;
以B为底A的对数(大概)是在结果小雨1以前用B除A的次数;
线性查找须要的时间与数组中数据项的个数成正比;
二分查找须要的时间与数组中数据项的个数的对数成正比;
大O表示法为比较算法的速度提供了一种方便的方法。
O(1)级时间的算法是最好的,O(logN)次之,O(N)为通常,O(N²)最差;
36页