1、二分法
二分法又叫折半查找,优点是比较次数少,查找速度快,平均性能好;
其缺点是要求待查表为有序表,且插入删除困难。
一般有两种实现方式:
递归方式和非递归方式
(1)非递归方式:
public static void binarySearch(int[] arr,int des){
int low=0;
int high=arr.length-1;
while(low<=high){
int middle=(low+high)/2;
if(arr[middle]>des){
high=middle-1;
}else if(arr[middle]<des){
low=middle+1;
}else{
return middle;
}
}
}
(2)递归方式:
public static int binarySearch(int[] arr,int des,int low,int high){ int middle = (low+high)/2; if (des<arr[low]||des>arr[high]||low>high) { return -1; } if (arr[middle]<des) { return binarySearch(arr, des, middle+1, high); }else if (arr[middle]>des) { return binarySearch(arr, des, low, middle-1); }else{ return middle; } }