我找的是b中的元素对应在数组a中的索引
请注意,二分查找要求查找范围内的数是有序的,在a中找b,那么要求a是有序数组
a=[6,9,11,15,20]%查找范围
b=[15]%需要找的点
for i=1:length(b)
start = 1, endPos = length(a);
while (start <= endPos)
mid = (start + endPos) / 2;
mid=ceil(mid)%向上取整,避免mid为小数的情况,比如0.5
% mid=round(mid)
if mid==0%matlab不支持索引为0
mid=1
end
if b(i) < a(mid)
endPos = mid - 1;
else if b(i) > a(mid)
start = mid + 1;
else if b(i) == a(mid)
index=mid; %此处可以自己定义代码功能,根据自己的需求修改
break;
end
end
end
end
end
结果