顺序查询 时间复杂度O(n)
就是简单粗暴遍历每个元素,判断是否相等,返回元素在列表中的位置。
二分查找 时间复杂度O(log2 n) 以2为低n的对数
循环法
//循环法表示二分查找
public static int testEf(int[] a,int ins,int b,int i) {
int result = 0;
int mid = (b + i) / 2; //b表示下标下限 i表示下标上限,mid下标中值
if(ins < a[b] || ins > a[i]) {
return -1;
}
while( ins != a[mid]) {
if(ins < a[mid]) {
mid = (b + i - 1) / 2 ;
i = mid ;
}
else if(ins > a[mid]){
mid = (b + i + 1) / 2 ;
b = mid;
}
}
result = mid;
return result;
}
递归法
public static int testDg(int[] a ,int ins,int low, int high) {
int mid = (low + high)/2 ; //low表示下标下限 high表示下标上限,mid下标中值
if(ins < a[low] || ins > a[high]) {
return -1;
}
else if(ins == a[mid]) {
return mid;
}
else if(ins < a[mid]) {
mid = (low + high - 1)/2;
return testDg(a,ins,low,mid);
}
else if(ins > a[mid]) {
mid = (low + high + 1)/2;
return testDg(a,ins,mid,high);
}
return -1;
}