Java基础必备---二分法查找
来源:互联网 发布:csgo优化弹道 编辑:程序博客网 时间:2024/06/03 17:10
/*算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。 基本思想: 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。 查找 key=58数组arr: | 10 | 16 | 38 | 58 | 118| ==========================第一次: | 10 | 16 | 38 | 58 | 118| //min=0,max=4,mid=2,key>arr[mid],在后半段查找; ^ ^ ^第二次: | 10 | 16 | 38 | 58 | 118| //min=3,max=4,mid=3,key==arr[mid],则key查找到;*/ public static int binarySearch(int[] arr, int key) { int min = 0; //定义小标,并初始化为0; int max = arr.length-1; //定义大标,并初始化为数组的最后的坐标; int mid = (min+max)/2; //定义中标,并初始化值为(min+max)/2,比如int(0+5)/2=2l while(arr[mid]!=key) //当中标的值与给定的值不一样时, { if(key>arr[mid]) //如果给定的值大于中标, { min = mid + 1; //则小标=中标+1;比较后半段 }else if (key<arr[mid]) //如果给定的值小于中标 { max = mid - 1; //则小标=中标-1;比较后半段 } if(min>max) //如果小标>大标,没有找到给定的值; { return -1; //返回-1,代表Error } mid = (min+max)/2; //设置中标=(小标+大标)/2; } return mid; //arr[mid]==key,则返回中标; } public static void main(String[] args) { int[] arr = new int[]{10,16,38,58,118}; int index = binarySearch(arr,58); System.out.println("index="+index); index = binarySearch(arr,8); System.out.println("index="+index); }#运行结果:index=3index=-1
0 0
- Java基础必备---二分法查找
- java基础二分法查找
- Java语言基础-查找算法-二分法查找
- Java基础复习 查找算法之二分法
- Java语言基础-12.二分法查找
- 12.java语言基础-查找算法-二分法查找
- 【基础算法】二分法查找
- 二分法查找基础
- Python基础----二分法查找
- java 二分法查找
- JAVA 二分法查找实现
- java二分法查找法
- JAVA 二分法查找实现
- JAVA 二分法查找
- java实现二分法查找
- java 二分法查找
- Java二分法查找
- java实现二分法查找
- python 用特殊方法定制类
- java的alert信息提示框
- 字符串表示 大数相乘
- 获取进程信息在Realease下路径不完整的情况分析
- 模板函数的使用
- Java基础必备---二分法查找
- android启动前的黑屏
- caffe安装指南
- 广州最专业的皮肤病医院5诱发鱼鳞病的原因有哪些
- Windows 共享网络设置(有线网络和无线网络)
- hdu 5073 2014鞍山现场赛题 物理题
- Java工具类之Apache的Commons Lang和BeanUtils
- 广州看皮肤病上那个医院E专家解读怎样有效预防青春痘
- 另类屏幕适配-通过缩放布局达成适配效果