数组加强和Arrays工具类
数组操作
冒泡排序
假定数组中第一个值最大 依次和后面的值做比较 如果前面的值比后面的大,则前面的值和后面的值交换位置
//冒泡排序
int[] arr={12,3.5,8,2,15};
//
public static int[] maoPao(int[] arr){
int change;
//定义变量
for(int j=0;
jarr[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.方法名()
注意
- 查询工具类中的方法
- 常用的方法 参数类型 返回值
【数组加强和Arrays工具类】增强for循环(foreach) 没有索引,凡是涉及有索引相关操作还是用普通for循环
//语法结构
for(数据类型 变量名:源){//源指的是要遍历的数组或集合
执行语句;
}
可变参数
//语法结构
数据类型...变量名
int...a;
- 其实本质上也是一个数组
- 使用可变参数 像遍历数组一样遍历
- 可以传0或者多个同类型的参数
- 可变参数只能放在参数列表的末尾
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福