我正在尝试在Matlab中实现迭代三元搜索(请参见下文)。 当我尝试运行它时,没有生成任何错误,但是它并没有完成运行(我必须强制退出)。很有可能,它陷入了循环,因此永远无法完成运行。我不知道为什么会这样,我要去哪里错了?
编辑:我正在编辑帖子。 @CrisLuego,我尝试对您的回答发表评论,但是我受到堆栈溢出的限制(可能是由于我的声誉有限)
arr = [1 2 3 4 5 6 7 8 9 10];
num=2;
n=10;
loc4 = ternarySearch(num,arr,n);
disp(loc4);
function location = ternarySearch(search_num,array,n)
i=1;
j=n;
while i<j-1
m1 = round(i + (j-i)/3);
m2 = round(i + 2*(j-i)/3);
if search_num>=array(m1)
i = m1 + 1;
j = m2;
elseif search_num>=array(m2)
i = m2+1;
else
j=m1;
end
end
if search_num==array(i)
location=i;
elseif search_num==array(j)
location=j;
else
location=0;
end
end