如果你有一个包含大量排序 int值的表/数组,并且你想找到一个,而不是一个一个地去,我知道有一个非常有效的方法可以做到这一点:首先,它转到中间元素。如果元素值大于搜索到的值,则忽略此元素之上的所有元素,然后向下到中间。否则它会上升到中间。并继续这样做,直到找到该值。
在伪中它会是这样的
searched_value = X
actual_index = length(array)/2
offset = actual_index
while(true){
if array[actual_index] = searched_value then return actual_index
if array[actual_index] > searched_value then
offset = round_down( offset / 2 )
actual_index = actual_index - offset
else
offset = round_up( offset / 2 )
actual_index = actual_index + offset
}
我知道这个方法有一个名字,但我无法记住它。
答案 0 :(得分:2)
我相信你正在考虑二元搜索。
我不知道您正在使用哪种语言,但可能会有API调用。