Тернарная родовая программа - PullRequest
0 голосов
/ 14 октября 2019

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

...