🌟数组:
概述:
数组是相同数据类型的多个数据的容器。
创建格式:
常用格式1:数据类型[] 数组名称 = new 数据类型[数组长度];
int[] ages = new int[10];
常用格式2: 数据类型[] 数组名称 = {数组内容1,数组内容2,数组内容3};
int[] age2 = {10.11.12};
数组的遍历:
从下标 index = 0; 打印到 index 的最大值,称为数组的遍历;语法
for(index = 0;index<age2;index++){
System.out.println(“ages[index]”);
}
数组常见问题:
1.数组下标越界问题
2.空指针问题:未给数组赋值
寻找数组中的最大值或最小值:
步骤:
1.创建一个变量,用于存储遍历数组是发现的最大值
2.循环取出数组中的每一个内容,从1开始,并将数组中的每一个内容与n 比较
比如
int mums = {10,20,88,30,65};
int n = nums[0]; //设置遍历的数组中的第一个数,但凡比这个数大就
for(i = 1;i<nums.length;i++){
n = n>nums[i]?n:nums[i]; //三目运算符,表示如果n>下角标为i 的数,就赋值n,否则赋值nums[i];
}
🌟冒泡排序:
原理:比较相邻的数据,将较小数据的移到左边,将较大的数据移到右边
15 18. 13. 20. 30. 60
0. 1. 2. 3. 4. 5
比较的轮数:数组长度-1;
第1轮比较次数:数组长度-1次
第2轮比较次数:数组长度-2次
第n轮比较次数:数组长度-n次
升序排列口诀:
N个数字来排队,
两两相比小靠前。
外层循环length-1;
内层循环length-i-1。
升序排列口诀:
N个数字来排队,
两两相比大靠前。
外层循环length-1;
内层循环length-i-1。
🌟二分查找:
int[] mums = {10,20,30,40,50,60,70,80,90};
查找的数组数据必须是有序排类的,如果乱序要用冒泡排序写成顺序
查找数据60
几个关键点:
1.确定查找的范围 最小下标 最大下标
2.计算中间的下标 (最小+最大)/2
3.与中间下标数据做比较,若中间数据较大,则最大下标等于中间下标-1
与中间下标数据做比较,若中间数据较小,则最小下标等于中间下标+1
4.当最小下标 大于 最大下标时,说明数据是不存在的
🌟多维数组(了解)
结构:
数据类型[ ] [ ] 数组名= new 数组类型[外层数组长度][ ]
Public static void main(String[] args){
Int[ ] [ ] nums = new int[ ] [ ];
nums[0] = new int[ ] {1,2,3};
System.out.println(nums[0][ ] );
}
🌟约瑟夫环:
复制数组方法:
System.arraycopy();
方法里有5个参数:
(原数组,原数组的起始位置,目标数组,目标数组的起始位置,复制多少个数据)
用法:
int[] a = {3,1,8,7,2,9};
int[] b = new int[10];
System.arraycopy(a,0,b,0,a.length);
如果,目标数组长度小于原始数组,需要去掉原始数组中指定坐标的数字,复制两次截断数组
int[] a = {3,1,8,7,2,9};
int[] b = new int[5];
去掉index 2 的数字
设int index=2;
System.arraycopy(a,0,b,0,index);
System.arraycopy(a,index+1,b,index,a.length-index-1);
System.out.println(Arrays.toString(a)); //将数组转化成字符串输出(自带格式)
把上述内容封装成方法:
kickoff(a,index:2);
showArray(a);
//踢掉指定数字的方法:
Private static void kickOff(int[] a, int index){
Int[] b = new int[a,length-1];
System.arraycopy(a,0,b,0,index);
System.arraycopy(a,index+1,b,index,a.length-index-1);
return b;
}
//显示数组方法:
Private static void showArray(int[] a){
System.out.println(Arrays.toString(a)); //将数组转化成字符串输出(自带格式)
}