数组
2023-04-10 20:31:18 12 举报
AI智能生成
思维导图
作者其他创作
大纲/内容
数组的排序
冒泡排序
思想:- 1.将相邻的两个元素进行比较,如果前面一个元素比后面的大,就交换位置(一轮比较) 直到比较完 整个数组,称为一轮
- 在这一轮可以将最大的值 比较到最后
- 2.以上操作需要完成的次数数组长度-1
- 在这一轮可以将最大的值 比较到最后
- 2.以上操作需要完成的次数数组长度-1
选择排序
思想:- 1.将当前这个位置上的元素与后面的每一个元素进行比较,如果有比当前位置小的元素,先记录下来,等所有元素比较完,进行交换
- 一次循环可以将最小的交换到最左边
- 2.以上操作可以将最小的选择到指定位置。
- 一次循环可以将最小的交换到最左边
- 2.以上操作可以将最小的选择到指定位置。
Arrays工具类提供的排序方法
Arrays.sort(数组名);
二分查找法(折半查找法)
前提
前提:数组必须有序的题
思想:
- 1.首先确实数组中的中间元素,与你要查找的元素进行比较。如果相等那么就是你要找的数本身
- 2.如果比中间元素大,那么要找的数一定在中间元素的右边 所以最小值小下标等于 中间值的下标+1
- 3.如果比中间元素小,那么要找的数一定在中间元素的左边 所以最大值小下标等于 中间值的下标-1
- 2.如果比中间元素大,那么要找的数一定在中间元素的右边 所以最小值小下标等于 中间值的下标+1
- 3.如果比中间元素小,那么要找的数一定在中间元素的左边 所以最大值小下标等于 中间值的下标-1
二维数组
二维数组中存放的每一个元素,是一个一维数组。
二维数组的创建
静态
int [][] arr={{11,22,33},{44,55},{66}};
动态
注意
二维数组在动态初始化的时候 可以先不指定一维数组长度 但必须要指定二维数组的长度
int [][] arr1=new int[3][ ];
一维数组可以先不指定 但是一旦指定了长就固定了
/如果在定义二维数组的时候没有给一维数组传入长度 那么在使用之前一定要初始化 不然 空指针异常
int [][] arr1=new int[3][2];
二维数组遍历
可变参数
特点
1.带有可变参数的方法进行调用的时候 实参个数 可以是0个 也可以是多个
2.可变参数只能放在参数列表的最后 并且 可变参数一个方法只能有一个
3.可变参数可以当作数组来使用 也可以将数组作为参数
数组
概念
数组在内存中一块连续的存储空间,可以保存 相同类型 多个数据的容器哦 且 长度固定。
特点
数组保存保存的数据必须是相同的数据类型
数组的长度是固定的(一旦定义好 不可改变)
数组的创建
动态初始化
数据类型 [ ] 数组名 = new 数据类型 [ 长度]
数据类型 数组名[ ] =new 数据类型[ 长度]
静态初始化
数据类型 [ ] 数组名={数据1 , 数据 2,数据3,数据4...... }
数据类型 数组名[ ] = { 数据1 , 数据 2 , 数据3 ,数据4 }
数据类型 [ ] 数组名 =new 数据类型[] { 数据1 , 数据 2,数据3,数据4...... }
数组的默认值
(在数组创建的时候没有赋值的时候是有默认值的)
(在数组创建的时候没有赋值的时候是有默认值的)
- 整数型数组默认值:0
- 浮点型默认值:0.0
- 布尔型数组默认值:false
- 字符型数组默认值:‘ ’ 0 或者‘ \u0000’
- 引用类型默认值是:nul(null 是一个特殊的值 表示当前对象在内存当中不指向任何地址)
子主题
数组的扩容、缩容
扩容
1.定义一个新的数组
2.将原数组的值依次赋值给新数组
3.将数组名指向新数组的地址
2.将原数组的值依次赋值给新数组
3.将数组名指向新数组的地址
int[] newArr=new int[oldArr.length+5];
for (int i = 0; i <oldArr.length ; i++) {
newArr[i]=oldArr[i];
}
System.out.println(oldArr);
oldArr=newArr;
for (int i = 0; i <oldArr.length ; i++) {
newArr[i]=oldArr[i];
}
System.out.println(oldArr);
oldArr=newArr;
系统提供的扩容方法
System.arraycopy
int[] oldArr={11,22,33,44,55};
int[] newArr=new int[oldArr.length+5];
System.arraycopy(oldArr,0,newArr,0,oldArr.length);
int[] newArr=new int[oldArr.length+5];
System.arraycopy(oldArr,0,newArr,0,oldArr.length);
Arrays.copyOf
int[] newArr = Arrays.copyOf(oldArr, oldArr.length + 5);
缩容
0 条评论
下一页