三元排序永无止境的程序

时间:2019-10-14 14:35:18

标签: matlab loops while-loop

我正在尝试在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

0 个答案:

没有答案