fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class BinarySearch {
  8.  
  9. // 二分查找方法
  10. public static int binarySearch(int[] arr, int target) {
  11. int left = 0; // 定义左边界
  12. int right = arr.length - 1; // 定义右边界
  13.  
  14. while (left <= right) { // 当左边界小于等于右边界时,继续查找
  15. int mid = left + (right - left) / 2; // 计算中间位置,避免大数溢出
  16. if (arr[mid] == target) { // 如果中间位置的元素正好是目标值,返回其索引
  17. return mid;
  18. } else if (arr[mid] < target) { // 如果中间位置的元素小于目标值,说明目标值在右半部分
  19. left = mid + 1;
  20. } else { // 如果中间位置的元素大于目标值,说明目标值在左半部分
  21. right = mid - 1;
  22. }
  23. }
  24. // 如果未找到目标值,返回-1
  25. return -1;
  26. }
  27.  
  28. public static void main(String[] args) {
  29. int[] arr = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; // 有序数组
  30. int target = 9; // 要查找的目标值
  31. int result = binarySearch(arr, target); // 调用二分查找方法
  32. if (result != -1) {
  33. System.out.println("元素 " + target + " 在数组中的索引为:" + result);
  34. } else {
  35. System.out.println("数组中不存在元素 " + target);
  36. }
  37. }
  38. }
  39.  
  40.  
  41.  
Success #stdin #stdout 0.13s 57632KB
stdin
Standard input is empty
stdout
元素 9 在数组中的索引为:4