binary_search_iter.sf 357 B

1234567891011121314151617181920212223
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Binary_search
  4. #
  5. func binary_search(a, i) {
  6.  
  7. var l = 0;
  8. var h = a.end;
  9.  
  10. while (l <= h) {
  11. var mid = ((h+l) / 2 -> int);
  12. a[mid] > i && (h = mid-1; next);
  13. a[mid] < i && (l = mid+1; next);
  14. return mid;
  15. }
  16.  
  17. return -1;
  18. }
  19. say binary_search(@(1..100), 23);