Arrays.binarySearch()返回值问题
来源:互联网 发布:wepy 知乎 编辑:程序博客网 时间:2024/05/20 19:45
今天在复习之前的基础知识突然在Arrays.binarySearch()这个方法的返回值得问题上出现了小问题:
总结:binarySearch()方法的返回值为:1、如果找到关键字,则返回值为关键字在数组中的位置索引,且索引从0开始2、如果没有找到关键字,返回值为负的插入点值,所谓插入点值就是第一个比关键字大的元素在数组中的位置索引,而且这个位置索引从1开始。
注意:调用binarySearch()方法前要先调用sort方法对数组进行排序,否则得出的返回值不定,这时二分搜索算法决定的。
import java.util.Arrays;public class Arraydemo1 { public static void main (String [] args){ //定义一个int型的数组 int []arr ={8,1,2,5,4,9}; System.out.println("toString:"+Arrays.toString(arr)); //调用Arrays的排序方法 Arrays.sort(arr); System.out.println("toString:"+Arrays.toString(arr)); System.out.println("--------------------------------"); System.out.println("binarySearch:"+Arrays.binarySearch(arr, 8));//4 System.out.println("binarySearch:"+Arrays.binarySearch(arr, 26));//-7 System.out.println("binarySearch:"+Arrays.binarySearch(arr, 6));//-5 System.out.println("binarySearch:"+Arrays.binarySearch(arr, 0));//-1 }}结果:排序前:[8, 1, 2, 5, 4, 9]排序后:[1, 2, 4, 5, 8, 9]--------------------------------关键字8的返回值是:4关键字26的返回值是:-7关键字6的返回值是:-5关键字0的返回值是:-1分析: 当我们查找的关键字是8在该数组中,则返回的结果是该数组排好序之后的下标4;(找到关键字索引从0开始) 接着我们查找关键字26,我们发现这个关键字并不在该数组中,并且26比数组中的所有元素都大,所以返回值是数组length+1,也就是6+1=7; (没有找到关键字索引从1开始) 接着我们查找关键字6,由于排好序的数组中第一个大于6的数是8所以返回值就是8所在的索引5; (没有找到关键字索引从1开始) 接着我们查找关键字0,由于在该数组中比0稍大的数是1,则返回1的索引1;(没有找到关键字索引从1开始) 之所以计算插入点值时索引要从1开始算,是因为-0=0,如果从0开始算,那么上面例子中关键字2和关键字4的返回值就一样了。这篇博客我是参考了下面这个兄弟的博客园的总结才明白的:[参考原文]( http://www.cnblogs.com/qingergege/p/5658292.html)
阅读全文
0 0
- Arrays.binarySearch()返回值问题
- 关于Arrays.binarySearch()方法的返回值的问题
- 你了解Arrays.binarySearch()方法的返回值吗?
- Arrays.binarySearch()
- Arrays.binarySearch();
- Arrays.binarySearch
- JAVA Arrays.binarySearch
- Arrays.binarySearch用法
- JAVA Arrays.binarySearch
- JAVA Arrays.binarySearch
- 关于binarySearch返回值为负数
- Arrays.binarySearch(二分法检索)
- Arrays.binarySearch() 方便记忆版
- Arrays.binarySearch(int[] a, int key)
- java API------Arrays类binarySearch方法
- Arrays类中sort,binarySearch,fill实例
- Arrays.binarySearch(int[] a, int key)
- Arrays.binarySearch以及Longest Increasing Subsequence
- 解决Unity Vertex Shader 渲染丢失的问题
- deepmind_lab 运行以 _pk3结尾的文件的依赖的东西
- CentOS部署java项目环境
- SQL优化
- Deep Forest:一种深度神经网络的替代模型架构
- Arrays.binarySearch()返回值问题
- python中的“self”
- vue阻止事件冒泡
- JAVA中的Pattern
- Python 深入浅出
- VS2017常见问题解决
- 如何做出漂亮的序列比对图——ENDscript/ESPript
- getopt和getopt_long
- gwo灰狼算法matlab源码