Here is my code:
local function interpolateSearch(array,toFind) local low = 1 local high = #array local mid while array[low] <= toFind and array[high] >= toFind do mid = low +((toFind-array[low])*(high-low))/(array[high]-array[low]) if array[mid] < toFind then low = mid + 1 elseif array[mid] > toFind then high = mid - 1 else return mid end end if array[low] == toFind then return low else return -1 end end
it works fine if toFind is set as a number in array, but if toFind is set as a number not in the array I get the following error: (I'm not compiling in roblox studio so the error message is a little different)
attempt to compare nil with number
stack traceback:
t.lua:7: in function 'interpolateSearch'
t.lua:23: in main chunk
[C]: ?
I am using the java sample implementation for reference at http://en.wikipedia.org/wiki/Interpolation_search
Nvm. I found out how to do it at http://lua-users.org/wiki/InterpolatingSearch