二分法查找

 

查找程序:

 

public class chazhao {//缺点性能较低  
  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
  
        int data=3;  
        int [] numbers={1,2,4,5,3};  
        for(int number:numbers){  
            if(number==data){  
                System.out.println("存在");  
                return;  
            }  
        }  
        System.out.println("No");  
    }  
  
}  

二分法查找:

搜索数据与有序数组(比如升序)中间元素比较以确定在中间元素左边还是右边,如果在右边,则调整最小搜索索引值,然后进入下次循环;如果在左边,则调整最大搜索索引值,然后进入下次循环;如果相等则当前位置就是查找数据所在位置,停止循环;

public class zhaban {//z折半查找是相对来说最快的一种查找方式  
  
    public static void main(String[] args) {  
        int data=6;  
        int [] numbers={1,2,3,4,5}; //下标0-4  
         int low=0;  
         int a=0;  
         int high=numbers.length-1;  
         while(low<=high){  
             System.out.println("............");  
             int middle=(low+high)/2;  
             if(data==numbers[middle]){  
                 System.out.println("Yes");  
                 a=1;  
                 break;   
             }else if(data>numbers[middle]){  
                 low=middle+1;  
                   
             }else if(data<numbers[middle]){  
                 high=middle-1;  
             }            
         }  
          
         if(a==0){  
             System.out.println("No");  
         }  
          
    }  
  
}  

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值