Flask接口签名sign原理与实例代码浅析
400
2022-12-15
Java binarysearch方法原理详解
这篇文章主要介绍了java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先 数组排序需要import java.util.Arrays类
binarysearch有两个用法,一个是在整个数组里搜索,一个是在指定范围搜索,其实都是差不多的,可以将前者视为后者的特殊情况。
用法1
binarySearch(Object[], Object key)
Object是目标数组,key是目标值,要求目标数组必须要经过排序的,否则无法找到正确的结果
查询无非就是两种结果,一种是目标值在目标数组里,另一种是不在
所以返回值也分为正负两种,目标值在目标数组内的,返回下标(如果有多个相同的,无法确定找到的是哪个,因为是二分搜索)
目标值不在数组内的,返回 -(第一个大于目标值的元素的下标+1),类似的,如果数组内的值都比目标值小,则是返回-(数组长度+1)
样例:
import java.util.Arrays;
public class number {
public static void main(String[] args) {
int a[http://] = new int[] {1, 3, 4, 6, 8, 9};
int x1 = Arrays.binarySearch(a, 5);
int x2 = Arrays.binarySearch(a, 4);
insuuvIt x3 = Arrays.binarySearch(a, 0);
int x4 = Arrays.binarySearch(a, 10);
System.out.println(x1+" "+x2+" "+x3+" "+x4);
}
}
输出:
-4 2 -1 -7
也可以这么理解:
对应相应的位置输出即可。
用法2
binarySearch(Object[], int fromIndex, int toIndex, Object key)
加了两个int变量,代表区间的开始和结束,从fromindex(包含)到toindex(不包含)这个区间里面搜索,返回值和前面用法1类似,唯一有所不同的是,当如果区内的值都比目标值小,则是返回-(toihttp://ndex+1),如果区间内的值都比目标值大,则返回-(fromindex+1),仔细想想不难理解,用法1就相当于fromindex为0且toindex为数组长度的用法2。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~