数组加强
冒泡排序:
通过代码实现数组中元素的从小到大排列
思路:按角标从小到大的顺序将元素两两之间进行比较,如果前面元素的值比后面的大则交换值
if(arr[1]>arr[2]){
int temp=arr[1];
arr[1]=arr[2];
arr[2]=temp;
}
比较完所有次数最后一位会是数组的最大值,则开始的下一轮比较上一轮产生的最大值不参与
二分法:
查询一个元素在数组中的位置
思路:和数组中间位置(索引)进行比较,来判断其元素所属的范围区间,如果比中间值大则中间值(索引)+1位置为区间最小值,小于中间值则中间值(索引)-1位置为区间最大值,查找过程在最大值等于最小值是结束
static int getIndex(int num,int[] arr){
int minindex=0;//最小值
int maxindex=arr.length-1;//最大值
int midindex=(minindex+maxindex)/2;//中间值
while(minindex<=maxindex){//最小值等于最大值跳出循环
if(num>arr[midindex]){//判断区间
minindex=midindex+1;
}else if(num
maxindex=midindex-1;
}else if(num==arr[midindex]){//找到了返回值
return midindex;
}
midindex=(minindex+maxindex)/2;
}
return -1;
}
二维数组
概念:
二维数组本质是元素为一维数组的数组
语法:
动态创建:
数据类型[][]数组名=new数据类型[长度][长度];
静态创建:
数据类型[][]={{元素1,元素2},{元素1,元素2},{元素1,元素2}};
二维数组的遍历:
增强for循环遍历
public static void main(String[] args){
int[][] ar={{1,2,3},{4,5,6},{7,8,9}};
for(int[] e:ar){//forech遍历外层二维数组得到一维数组
for(int a:e){//forech遍历每一个数组得到元素
System.out.println(a);//打印元素
}
}
}
for循环遍历
for(int i=0;i<=ar.length-1;i++){
for(int j=0;i<=ar[i].length-1;j++){
System.out.print(ar[i][j]);
}
}
增强for循环
语法:
for(数据类型 e:源){//源可以是数组与集合
System.out.peintln(e);
}
执行过程;
每次从源中遍历的数据,都临时存放在里面,可以在循环内部,通过e取出到每一个元素
工具类
概念;
java中已经写好的类和方法直接拿出来使用就可以了
使用api文档
通过索引查找类
java.util包名
如何调用方法
可变参数
概念:
可变参数的概念:方法传入【实参】参数的个数可变
语法:
数据类型...参数名字
细节:
可变参数的语法细节
static void print(String name,int ... a){可以
static void print(int ... a,String name){不行
static void print(int ... a,String ... name){不行
可变参数的前面可以写普通的参数类型,不能写可变参数类型
可变参数的后面:什么都不能写