为什么会有数组,因为在程序执行过程中,经常需要存储大量的数据,这样就需要一个高效的有条理的方法,那就是数组,将相同数据类型的存放在一起。
数组:存储数据的集合
声明数组:元素类型[] 数组引用变量 int[] myList;或者元素类型 数组引用变量[] int myList[];
创建数组:元素类型 数组引用变量 = new 元素类型[数组大小] double[] myList = new double[10];
上面的意思是,创建一个数组变量名叫myList,由10个double类型元素构成
当给数组分配空间时,必须通过指定该数组能够存储元素个数来确定数组大小,所以创建数组后不可再修改大小了,而数组里的元素是通过下标访问,范围是从0到数组长度-1
我们也可以在创建时就初始化数组,如:
double[] myList new double[3];
myList[0] = 1.0;
myList[1] = 2.0;
myList[2] = 3.0;
或者:
double[] myListone = {1.0,2.0,3.0};
数组的查找:(线性查找、二分查找等)
线性查找法 使用for循环挨个遍历一遍
for(int i=0;i<list.length;i++){
System.out.println(i);
}
或使用增强版for循环
for(int i:list){
System.out.println(i);
}
二分查找法 但前提是数组已经排序好了,二分法是每次比较后就排除一半的数组元素,所以大大提高了效率
数组的排序:(选择排序、插入排序、冒泡排序等)
选择排序 假设要按升序排列,那么会在元素中遍历一遍找出最小的放在最前面,然后在元素再找出最小的放在第一个数的后面,以此类推
插入排序 假设排序n个元素,而开始是0带n-1为止,我们认为每插入一个,0-i我们都是排列好的
for(int i = 0;i<list.length-1;i++){
int min = list[i];
int minindex = i;
for(int j = i+1;j<list.length;j++){
if(min > list[j]){
min = list[j];
minindex = j;
}
}
if(minindex != i){
list[minindex] = list[i];
list[i] = min;
}
}
冒泡排序 是将第1个数和第2个数比较,大的数右移,然后比较第2个数和第3个数,大的右移,以此类推,将n个数都比较完算一趟,要比较n-1趟才能将数组排序好
为了满足更大的需求,后面还有二维、三维、多维等数组,简单用现实世界做比较的话,就是一维好比一条线,二维好比一个面有xy轴,三围好比一个立体空间有xyz轴以此类推
,而且再后面很少有用到,所以简单说明一下二维数组
二维数组声明和创建跟一维数组差不多,比如:
int [][] mar = new int[3][];
mar[0] = new int[1];
mar[1] = new int[2];
mar[2] = new int[3];
上面的意思是创建一个二维数组mar,第一维是3,对应的下标0,1,2分别有1,2,3个元素
也可以直接为某个坐标赋值:mar[1][2] = 10;
或者:int [][] mar = {{1},{11,10},{20,21,22}}