当前位置:   article > 正文

java数组元素查找(二分查找法)_java使用二分查找法,查询以下数组中256的数。 int[] arr3 = new int[]{-

java使用二分查找法,查询以下数组中256的数。 int[] arr3 = new int[]{-99,-54,-2

二分查找法使用条件

  • 使用时数组必须是有序数组

 原理

  • 通过下标得到数组内元素间相对的大小关系,定义三个变量:两个边界变量确定查找范围,一个取值两个边界变量中间值的中间变量用于同被查找值比较大小、从而改变边界变量的值进而缩小查找区间的范围、重新确定中间值,并重复这一过程直到中间值下标等于查找值、最小值下标大于最大值下标,退出循环。
  1. public static void main(String[] args) {
  2. int arr[] = {1,2,3,4,5,6,7,8,9,10};
  3. System.out.println(binarySearch(arr, 23));
  4. }
  5. public static int binarySearch(int[] arr,int key){
  6. //数组查询区间开始索引
  7. int head = 0;
  8. //数组查询区间结尾索引
  9. int end = arr.length - 1;
  10. //开始索引小于结尾索引,当开始索引大于于结尾索引时循环结束,则表明该元素不存在。
  11. while (head <= end) {
  12. //求要查找的数组区间的中间元素的索引
  13. int mid = (head + end) / 2;
  14. if (arr[mid] > key) {
  15. //如果这次查询的区间中间元素值大于要查找的值,
  16. //则下一次循环查询区间的结尾等于这次中间元素值的索引-1,往左缩小查询区间。
  17. end = mid-1;
  18. } else if (arr[mid] < key) {
  19. //如果这次查询的区间中间元素值小于要查找的值,
  20. //则下一次循环查询区间的开头等于这次中间元素值的索引+1,往右缩小查询区间。
  21. head = mid+1;
  22. } else {
  23. //存在则返回元素索引
  24. return mid;
  25. }
  26. }
  27. //不存在返回-1
  28. return -1;
  29. }

 运行效果:当查找 2 时,查找到后返回该元素的索引。

  运行效果:当查找 11 时,因为该元素不存在数组里,则返回-1。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/977655
推荐阅读
相关标签
  

闽ICP备14008679号