Onze dagmethode #16: Array#bsearch
Geplaatst door Michiel de Mare di, 26 feb 2008 07:52:00 GMT
Zoeken in arrays is best langzaam. Gebruik liever een hash.
Maar als de array al gesorteerd is, kun je een binary search gebruiken. Die werkt door de array doormidden te delen, en vervolgens verder te zoeken in het linker of het rechter deel, net zolang totdat het element gevonden is of er nog maar een element over is..
class Array
def bsearch(k)
x,y = -1,size
while y != x + 1 do
m = (x + y) / 2
if self[m] <= k
x = m
else
y = m
end
end
x >= 0 && self[x] == k && x
end
end
Performance technisch is dit vast niet veel soeps… maar ik moest het gewoon proberen… een recursieve variant: