二分法查找

来源:互联网 发布:欠淘宝贷款50万 编辑:程序博客网 时间:2024/05/23 11:31

项目里面里面的算法涉及到了二分法算法,今天把它整理出来。
二分法的基本思路,就是把一个一个排好顺序的,分为高位,低位,中间,如果当前值等于中间值,则把它取出。如果当前值小于中间值,则从左边取,并且把左边再次分为高位,低位,中间。同理,如果高于中间值,并且把右边再次分为高位,低位,中间。比较取值(取下标的值)。

实现的算法

public static int  testDichotomy(int[]a  int num){       int low =0;   // 低位       int upper = a.length()-1;  //高位  下表从0开始的,固长度 -1;       int mid =0;   //中间值       //while循环       while(low <= upper){         mid = (low+upper)/2;         if(a[mid] > num){           upper =mid-1;       }else if(a[mid] < num){          low = mid+1;        }else{          return mid;        }      }       return -1;}

举个简单的例子:

int[] a={9,10,22,30,90};  这是一个int型的数组 低位low = 0; 高位upper = 5-1 =4; low< upper,while循环开始  中间位 = 0+4/2 =2;  // 下标  假设我们要查询 30 这个值的下标, 则这时的低位 low=mid +1 = 2+1 =3; 低位和高位的值 大小重新比较。如果小于,while循环重新开始工作。。
0 0
原创粉丝点击