数组操作
冒泡排序
假定数组中第一个值最大 依次和后面的值做比较 如果前面的值比后面的大,则前面的值和后面的值交换位置
//冒泡排序
int[] arr={12,3.5,8,2,15};
//
public static int[] maoPao(int[] arr){
int change;//定义变量
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1-j;i++){
if(arr[i]>arr[i+1]){//当前面的元素的值大于后一位的,互换值
change = arr[i];
arr[i] = arr[i+1];
arr[i+1] = change;
}
}
}
}
二分搜索
使用的前提是:被查找的数组中的元素必须是有序的
/*
1.定义一个方法,名字为binarySearch(int ele,int[] src)
2. 先查找数组中间位置(索引)出的元素和ele比较
3. 定义三个变量
最小索引 minIndex
最大索引maxIndex
中间索引 (minIndex + maxIndex) / 2
4. 比较判断确定范围
*/
//定义最大索引,最小索引,中间索引
public static int mappao(int a,int[] arr){
int maxIndex=arr.length-1;
int minIndex=0;
int midIndex=(maxIndex+minIndex)/2;
//判断条件确定
while(minInndex<=maxIndex){
if(a==arr[midIndex]){//a的值等于中间索引对应的元素的值
return midIndex;
}
else if(a>arr[midIndex]){//a的值大于中间索引对应的元素的值
minIndex=midIndex+1;
}
else{//a的值小于中间索引对应的元素的值
maxIndex=midIndex-1;
}
midIndex=(maxIndex+minIndex)/2;
}
return -1;
}
二维数组
数组是一个引用数据类型
遍历方式和一般数组一样
//创建方式(这里是把int[]看做一个数据类型)
//数据类型[] 数组名=new 数据类型[]
//动态打印
int[][] arr=new int[长度][];//长度是二维数组里数组的个数
例如:
int[][] arr=new int[2][3];//2代表的是二维数组的长度 3代表的是元素数组的长度
//静态打印
int[][] arr={{2,1},{4,3}}
Arrays工具类
Java已经帮我们写了的,比较具有代表性的 Arrays工具类,我们可以直接调用
//调用语法
java.util.Arrays.方法名()
注意
- 查询工具类中的方法
- 常用的方法 参数类型 返回值
增强for循环
增强for循环(foreach) 没有索引,凡是涉及有索引相关操作还是用普通for循环
//语法结构
for(数据类型 变量名:源){//源指的是要遍历的数组或集合
执行语句;
}
可变参数
//语法结构
数据类型...变量名
int...a;
- 其实本质上也是一个数组
- 使用可变参数 像遍历数组一样遍历
- 可以传0或者多个同类型的参数
- 可变参数只能放在参数列表的末尾