回答

收藏

如何用java实现二分查找算法

知识点 知识点 687 人阅读 | 0 人回复 | 2023-12-04

可以使用以下代码实现二分查找算法:

) l( g1 c' }+ r. L, `7 j
  1. public class BinarySearch { 4 N4 U+ `" W7 }0 W: A2 G4 ^, |: s
  2.     public static int binarySearch(int[] arr, int target) {
  3.         int left = 0; 8 N+ d, ^) B  R" f% K3 G* ]) `+ |  W
  4.         int right = arr.length - 1; 9 v5 i; s2 ~4 j9 d
  5.          5 T$ H, z" ^1 o9 s, F3 S( D% i  s
  6.         while (left <= right) { 3 L( S, u% g; P
  7.             int mid = left + (right - left) / 2;
  8.             
  9.             if (arr[mid] == target) { ' A6 g9 i3 ^9 {, T6 {
  10.                 return mid;
  11.             } - u' u& r$ n' l/ _  l) e- x! F3 w
  12.              7 U) Y; U; ^; V0 w7 u% R
  13.             if (arr[mid] < target) { & e3 v1 E5 a. I5 n1 L4 e
  14.                 left = mid + 1; / I0 o9 `- g' e3 `) ?$ u. x1 T
  15.             } else { ) C! O4 N8 b1 Q2 A) z) c& M7 I
  16.                 right = mid - 1;
  17.             } 6 B2 z0 W$ w7 u( Q& o' v
  18.         }
  19.          ; @% G" h8 o8 s+ @( E5 v, j  o
  20.         return -1; " K! o! X4 r3 I: s5 j
  21.     }
  22.     $ A" |! H) t1 ^5 M8 r4 R, K
  23.     public static void main(String[] args) { & O; f! J% c2 S& _
  24.         int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 1 L5 w* I) M1 ]( ~, `
  25.         int target = 6; " C3 L" E; u  X7 ~, L
  26.         
  27.         int result = binarySearch(arr, target);
  28.          0 [( K3 R0 j" ^) J6 H2 _+ V/ P
  29.         if (result == -1) {
  30.             System.out.println("Element not present in array"); 7 }- \; C, T' T5 X' @1 `5 s: S
  31.         } else {
  32.             System.out.println("Element found at index " + result);
  33.         } $ G* f2 b' C" R' w5 F
  34.     }
  35. } 4 n, O' |: m( S: v+ N) [2 |* f
复制代码
这是一个简单的二分查找算法的实现,可以在给定的有序整数数组中查找目标元素的索引。/ |. p1 c. L# R+ S" ]: c

. ?. M/ h9 f1 G) Q7 Y5 O
. a* O. a  }& \# j! S
关注下面的标签,发现更多相似文章
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则