1、基本查找
效率最低,但代码简便:
public static ArrayList<Integer> basicSearch(int[] arr,int number){
ArrayList<Integer> arr1= new ArrayList<>();
for(int i = 0; i<arr.length;i++){
if(arr[i] == number){
//return true;
arr1.add(i);
}
}
//return false;
return arr1;
}
2、二分查找
可以提高查找效率,但查找顺序必须是有序的:
public static int binarySearch(int[] arr,int number){
int min = 0;//最小值
int max = arr.length-1;//最大值
while(true){
if(min>max){
return -1;
}
//找中间值
int mid = (min+max)/2;
if(arr[mid]>number){
max = mid -1 ;
} else if (arr[mid]<number) {
min = mid+1;
}else if(arr[mid]==number){
return mid;
}
}
}
3、分块查找
对数据进行分块,要求块与块之间数据不重叠;
查找其中一个数时,通过对比块的最大值与最小值,获取块号;
再从块中获取索引;