Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. public class BinarySearch {
  2. public static void main(String[] args) {
  3. int x = Integer.parseInt(args[0]);
  4. int a[] = new int[args.length - 1];
  5. for (int i = 1; i < args.length; i++) {
  6. a[i-1] = Integer.parseInt(args[i]);
  7. }
  8. System.out.println(binsearchRecur(a,x,-1,a.length));
  9. }
  10.  
  11. //pre: a[i+1] <= a[i]
  12. //post: R = min(i) : a[i] <= x
  13. public static int binsearchIter(int[] a, int x) {
  14. int l=-1, r=a.length, m=0;
  15. //inv: a[l]>x && a[r]<=x
  16. while (l < r - 1) {
  17. m = l + (r - l) / 2;
  18. if (a[m] > x) {
  19. l = m;
  20. } else {
  21. r = m;
  22. }
  23. }
  24. return r;
  25. }
  26.  
  27. //pre: a[i+1] <= a[i], l = [-1; a.length], r = [-1; a.length]
  28. //post: R = min(i) : a[i] <= x
  29. public static int binsearchRecur(int[] a, int x, int l, int r) {
  30. int m = l + (r - l) / 2;
  31. if(l >= r - 1) {
  32. return r;
  33. } else if(a[m] > x) {
  34. return binsearchRecur(a, x, m, r);
  35. } else {
  36. return binsearchRecur(a, x, l, m);
  37. }
  38. }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement