数组
一、数组概述
-
数组是相同类型数据的 有序 集合。
-
数组描述的是 相同类型 的若干数据,按照一定的 先后次序 排列组合而成。
-
每个数据被称为一个 元素 ,每个数组元素可以通过 下标 来访问他们。(下标从0开始)
二、数组的声明和创建
-
声明:数组的类型 数组的名字 = 变量值
-
① int[ ] array; ② int array[ ]
-
java语言用new操作符来创建数组
int[] nums;// 定义 = int nums[] 一般不使用
nums = new int[10];//存放10个int类型的数字
// ①动态初始化 包含默认值
nums[0] = 1; // 给下标为0的数赋值为1
nums[1] = 2;
.
.
.
nums[9] = 10;//不可越界 数组长度一旦定义后不可改变
//输出的下标没有元素,默认为0。
*********************************************************
// ②静态初始化
int[] a={1,2,3,4,5,6,7,8,9,10}
-
获取数组长度: 数组名.length
// 打印数组全部元素:①需先遍历数组 ② sum += a[i]
for( int i=0;i< a.length;i++){
Syestem.out.println(a[i]);// 若是求所有元素的和:sum += a[i];/ sum = sum+nums[i];
}
/*求最大值步骤:①for遍历 ② if判断:if(a[i]>max) ③必须先给max赋初值 int max =a[0] ④将偏大的值赋值给max:max = a[i];*/
三、数组的使用
-
普通for循环,如上
-
增强for循环:for each 循环,没有下标,便于直接输出,但是取不到下标
int[] arrays = {1,2,3,4,5};
for (int array : arrays){} // 直接输入array.for 自动生成
-
反转数组 (难点,不是很懂)
修饰符 数据类型 反转操作符 传参(数组元素)
public static int[] reverse (int[] arrays);
{
int [] result = new int[arrays.length];
for (int i=0,j=result.length-1;
i<arrays.length;i++;j--)
{
result [j] = arrays[i];
}
return result;
}
四、多维数组
-
定义二维数组
int[][] array = {{1,2},{3,4},......};
array[0]--->{1,2} / array[1]--->{3,4}
array[0][0]--->{1} / array[1][1]--->{4}
-
打印二维数组
//①两个for 循环 ②注意区分坐标
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++)
Syestem.out.println(array[i][j]);
}
五、Arrays类
1.Arrays类
Arrays.sort(a) //数组升序排序
Arrays.fill( ) //数组赋值
Arrays.equals() //数组元素是否相等
Arrays.binarySearch() //将排好序的数组进行二分法查找
********************************************************
冒泡排序---->时间复杂度:0(n2)
双层排序:外层.冒泡轮次
内层.依次比较(判断两个数的大小,第一个数比第二个大,则交换位置)
2.static 可定义类,方便后面直接使用
六、稀疏数组(难点,没懂)
解决数组中大多数默认值为0/ 数组中的同一个元素的情况(就是没有意义的数据),用稀疏数组进行保存