算法--查找数组中元素

查找算法

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;
                
            }

        }
         
        
    }
   
    

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值