我在下面是在一維陣列上的簡單插值搜索$employee_list
。該清單是由於退休而可能存在差距的僱員ID的有序列表。在二維陣列的第二個元素上的紅寶石插值搜索
def exist?(id)
lower = 0
upper = $employee_list.length - 1
while $employee_list[upper] != $employee_list[lower] && id >= $employee_list[lower] && id <= $employee_list[upper]
middle = lower + ((id - $employee_list[lower]) * (upper - lower)/($employee_list[upper] - $employee_list[lower]))
if id > $employee_list[middle]
lower = middle + 1
elsif id < $employee_list[middle]
upper = middle - 1
else
return true
end
end
return false
end
現在我想將新元素添加到列表中,數組的第二個元素將包含員工的出生年份(即$employee_list[id][birthyear]
)。我能夠根據生日年齡對數組進行排序,並且我想根據生日年份進行插值搜索,並返回具有特定生日的員工ID列表。
如果發佈了一個輸入(您的'employee_list'變量的一個例子)和$ employee_list陣列中的期望的輸出 – Bustikiller
@Bustikiller樣品元件將是[19,1992]這將是非常有用的。這意味着ID爲19的員工誕生於1992年。此外,該方法的返回值應該是一個包含所選年份中出生的所有員工ID的數組。 – Benjamin