Viewing contents of file '../idllib/sdss/allpro/binary_search.pro'
pro binary_search,arr,x,index
;+
;
; NAME:
; BINARY_SEARCH
;
; CALLING SEQUENCE:
; binary_search,arr,x,index
;
; PURPOSE:
; Perform a binary search on arr, an input array, for the closest match
; to x.
;
;-
if n_params() eq 0 then begin
print,'syntax- binary_search,arr,x,index'
return
endif
n=n_elements(arr)
if (x lt arr(0)) or (x gt arr(n-1)) then begin
index=-1
return
endif
down=-1
up=n
while up-down gt 1 do begin
mid=down+(up-down)/2
if x ge arr(mid) then begin
down=mid
endif else begin
up=mid
endelse
endwhile
index=down
return
end