一、Arrays类
1.Arrays类概述
Arrays类是针对数组进行操作的工具类。提供了排序,查找等功能。
2.成员方法
public static String toString(int[] a)
把数组转成字符串
public static void sort(int[] a)
对数组进行排序
public static int binarySearch(int[] a,int key)
二分查找
二、排序
1.冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。
冒泡排序图解:
冒泡排序代码:
//冒泡排序代码
public static void bubbleSort(int[] arr){
for (int x = 0; x < arr.length - 1; x++) {
for (int y = 0; y < arr.length - 1 - x; y++) {
if (arr[y] > arr[y + 1]) {
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
}
2.选择排序
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。
选择排序图解:
选择排序代码:
//选择排序
public static void selectSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
for(int y=x+1; y<arr.length; y++){
if(arr[y] <arr[x]){
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
三、查找
1.基本查找
数组元素无序
2.二分查找
数组元素有序
二分查找图解:
二分查找代码:
/*
* 分析:
* A:定义最大索引,最小索引
* B:计算出中间索引
* C:拿中间索引的值和要查找的值进行比较
* 相等:就返回当前的中间索引
* 不相等:
* 大 左边找
* 小 右边找
* D:重新计算出中间索引
* 大 左边找
* max = mid - 1;
* 小 右边找
* min = mid + 1;
* E:回到B
*/
public class ArrayDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {11,22,33,44,55,66,77};
//写功能实现
int index = getIndex(arr, 33);
System.out.println("index:"+index);
}
/*
* 两个明确:
* 返回值类型:int
* 参数列表:int[] arr,int value
*/
public static int getIndex(int[] arr,int value){
//定义最大索引,最小索引
int max = arr.length -1;
int min = 0;
//计算出中间索引
int mid = (max +min)/2;
//拿中间索引的值和要查找的值进行比较
while(arr[mid] != value){
if(arr[mid]>value){
max = mid - 1;
}else if(arr[mid]<value){
min = mid + 1;
}
//加入判断,若元素不存在
if(min > max){
return -1;
}
mid = (max +min)/2;
}
return mid;
}
}
二分查找使用注意事项
当数组本身是无序的,这种情况下的查找不能使用二分查找。先排序的时候已经改变了数组最原始的元素索引,推荐使用基本查找。