二分法查找
来源:互联网 发布:欠淘宝贷款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
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 【Xcode使用技巧】Xcode环境变量(environment variables)
- Android6.0权限管理-PermissionsDispatcher
- hdu1712ACboy needs your help【分组背包入门题】
- Android中的WEB性能优化
- Jlink-如何刷固件
- 二分法查找
- hdu 5641
- 【codevs1378】选课 树形DP
- POJ 2362
- [译]raywenderlich.com官方的swift风格指南(一)
- C/C++中的内置基本类型
- [译]raywenderlich.com官方的swift风格指南(二)
- Oracle关于位图索引的创建与应用
- *记票统计