Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.52 KB | None | 0 0
  1. def bin_search(a, x):
  2. n = len(a)
  3.  
  4. def get(i):
  5. if i == 0:
  6. return float('-inf')
  7. elif i == n + 1:
  8. return float('inf')
  9. else:
  10. return a[i - 1]
  11.  
  12. l, r = 0, len(a) + 1
  13. while l < r - 1:
  14. m = l + (r - l) / 2
  15. if get(m) <= x:
  16. l = m
  17. else:
  18. r = m
  19. if get(l) == x:
  20. return l - 1
  21. else:
  22. return -1
  23.  
  24.  
  25. assert bin_search([1, 2, 3], 3) == 2
  26. assert bin_search([], 3) == -1
  27. assert bin_search([1, 3], 2) == -1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement