Advertisement
wavec022

binary search notes

Jan 19th, 2021 (edited)
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. Binary Search
  2.  
  3. // target
  4. // a (a sorted array)
  5.  
  6. var lo = 0 // inclusive bound
  7. var hi = a.length
  8.  
  9. while (lo < hi) {
  10. val mid = (lo+hi)/2 // lo+(hi-lo)/2 (this version may be better)
  11.  
  12. if(a(mid)==target) return true
  13. else if(a(mid) < target) lo = mid
  14. else hi = mid
  15. }
  16.  
  17. =====
  18.  
  19. def isqrt(n: Int): Int = {
  20. var lo = 0
  21. var hi = n/2
  22.  
  23. while (lo < hi) {
  24. val mid = (hi-lo)/2
  25. val check = mid*mid
  26.  
  27. if(check == n) mid
  28. else if(check < n) hi = mid-1
  29. else lo = mid
  30. }
  31. }
  32.  
  33. // that doesn't work though
  34.  
  35. def isqrt(n: Int): Int = {
  36. var lo = 0
  37. var hi = n // inclusive
  38. while() {
  39. val mid = (lo+hi+1)/2
  40.  
  41. if(mid*mid <= n) lo = mid
  42. else hi = mid-1
  43. }
  44. lo
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement