查找算法
1.线性查找
缺点:效率不高,通过遍历循环,一个个查找比对。
2.二分法
通过死循环不断地将数组一分为二,得到中间元素,然后目标元素与中间元素进行比对,当出位置等于末位置时,退出。
缺点:局限性很大,只能用于排好序了地数组
public class Search{
public static void main(String[] args){
MySearch arr=new MySearch();
int res=arr.lineSearch(2);
int res1=arr.twoSearch(3);
System.out.println(res);
System.out.println(res1);
}
}
class MySearch{
private int[] array;
public MySearch(){
this.array=new int[]{1,2,3,4,5,6,7};
}
//线行查找
public int lineSearch( int value) {
for (int i = 0; i < array.length; i++) {
if (array[i] == value) {
return i;
}
}//没有找到,返回-1
return -1;
}
//二分法,
public int twoSearch(int value){
//第一位置
int begin=0;
//最后位置
int end=array.length-1;
//中间位置
int midindx=(begin+end)/2;
//循环查找
while(true){
//当开始位置在结束位置之后或者重合时,那么没有这个元素
if(begin>=end){
return -1;
}
//判断目标值是否与中间元素相等
if(array[midindx]==value){
return midindx;
}else{
//判断目标元素与中间元素的大小关系
if(value>array[midindx]){
end=begin+1;
}else{
end=end-1;
}
//取出新的中间位置
midindx=(begin+end)/2;
}
}
}
}