zoukankan      html  css  js  c++  java
  • 利用二分查找查找有序列表中是否存在某个值

    package com.ecut.javabase;
    
    public class JavaDemo07 {
    //二分查找的java实现方法
    	public static void main(String[] args) {
    		int b = 4;
    		int a[] = {1,2,3,4,5,6,7,8,9};
    		int left = 0;
    		int right = a.length - 1;
    		
    		while(left < right) {
    			for(int i = 0;i<a.length;i++)
    			{
    				int middle = (left + right)/2;
    				if(middle < b) {
    					left = middle+1;
    				}
    				else if(middle > b){
    					right = middle-1;
    				}
    				else{
    					System.out.println("查找成功,在数组的第"+middle+"位");
    					return;
    				}
    			}
    			System.out.println("查找失败");
    		}
    		
    
    	}
    
    }
    

      个人理解是:先找出头和尾,然后求出他们之间的中间值,然后中间值和要查找的值进行对比,如果中间值比查找值大,那么查找的范围就可以排除中间值右边的区域。反过来就排除中间值左边的区域、一遍一遍进行循环,知道找到中间值和两边的值相等的那个数,如果没有找到,就是说明要查找的值并不在该数组里。

  • 相关阅读:
    数据库 连接(join)
    Linux top
    Game2048
    黑豆白豆问题
    1000个苹果10箱
    Jconsole
    八数码 Java实现
    两数之和
    磁盘调度算法
    常见应用网络层次
  • 原文地址:https://www.cnblogs.com/hairy/p/8613402.html
Copyright © 2011-2022 走看看