我有一个我要搜索的有序列表,但我没有在列表中查找特定值。我有一个阈值,想要找到大于该值的所有值。
例如,如果我有列表2 4 6 8 10 12 14 16 18 20,我正在搜索索引,该索引返回所有大于特定数字的值,如13。
这是我的代码的样子,但它并不适用于所有情况。例如,如果我有一个2 20的列表并且查找大于10的数字,则代码会被卡住。我试图找到一个优雅的解决方案来解决这些问题而不添加一堆if循环来检查特定情况,因为我将在最多8个列表上运行此函数1000万次!长,所以效率是关键。任何建议将不胜感激。
% Note that permutations represents my ordered list of values
function [index] = binarySearch(permutations, threshold)
start = 1;
stop = length(permutations);
middle = floor((stop+start)/2);
while(stop-start > 0)
if(permutations(middle) > threshold)
stop = middle;
elseif(permutations(middle) < threshold)
start = middle;
elseif(permutations(middle) == threshold)
index = middle;
return;
end
if(stop == 1)
index = 0;
return;
end
middle = floor((stop+start)/2);
end
index = middle;
end