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. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main(String[] args) {
  11.  
  12. int rank =findNumber(79, new int[]{2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79});
  13. System.out.println("Your number's index is " + rank);
  14.  
  15. }
  16.  
  17. public static int findNumber(int key, int... numbers) {
  18. int low = 0;
  19. int high = numbers.length - 1;
  20. int mid = (low + high) / 2;
  21. int rank = -1;
  22. int i = 0;
  23. for (i = low; i <= numbers.length - 1; i++) {
  24.  
  25. if (key < numbers[mid]) {
  26. high = mid;
  27. mid = (low + high) / 2;
  28. } else if (key > numbers[mid]) {
  29. low = mid;
  30. mid = (low + high) / 2;
  31. } else {
  32. rank = mid;
  33. return rank;
  34. }
  35. System.out.println("l:" + low + " h:" + high + " m: " + mid+ " i: " + i);
  36. }
  37. System.out.println("==l:" + low + " h:" + high + " m: " + mid + " i: " + i);
  38. return rank;
  39. }
  40. }
Success #stdin #stdout 0.04s 711168KB
stdin
Standard input is empty
stdout
l:6 h:12 m: 9 i: 0
l:9 h:12 m: 10 i: 1
l:10 h:12 m: 11 i: 2
l:11 h:12 m: 11 i: 3
l:11 h:12 m: 11 i: 4
l:11 h:12 m: 11 i: 5
l:11 h:12 m: 11 i: 6
l:11 h:12 m: 11 i: 7
l:11 h:12 m: 11 i: 8
l:11 h:12 m: 11 i: 9
l:11 h:12 m: 11 i: 10
l:11 h:12 m: 11 i: 11
l:11 h:12 m: 11 i: 12
==l:11 h:12 m: 11 i: 13
Your number's index is -1