Я пытаюсь реализовать итерационный троичный поиск в 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