二进制搜索无法正常查找问题

时间:2015-12-09 22:07:13

标签: javascript

        <script>
function DM(x){
    document.write(x)
}
</script>
</head>
<body>
    <script>
    var low = 0;
    var high = 500;
    var found = false;
    var indexB = 0;
    var rooterArray= [];
    var squaryness = true

    for(index=1;index<500;index++){
        var holder = index * index;
        rooterArray[index-1] = holder;
    };
    var isSquare = parseFloat(prompt("enter a number less then 250000"));
        while(low < high && !found){    
            indexB=(low + high)/2; 
            indexB = Math.floor(indexB)
            if(rooterArray[indexB] == isSquare){  
                found = true;
                document.write("Match was found subscript: "+indexB);
            }
            else{
                if(rooterArray[indexB] > isSquare){
                    high = indexB - 1;  
                }   
                else{
                    low = indexB + 1; 
                }
            }
        } 
        if(!found){ 
            document.write("dude obv not a perfect square");
        }
    </script>

代码只是为了检查您输入的数字是否是一个完美的正方形,并通知您使用二进制搜索和数组,但只会显示“抱歉,找不到值” 编辑:略有变化,随机的工作正常,而其他人没有,认为它可能与math.floor有关但不是100% 就我的测试而言,1件作品,4件,不是9件作品,16件不是,25件作品,36件不是,所以看起来连数字都不起作用。 我创建了一个运行while循环的函数,创建了第二个数组,但是从索引0开始使用for循环,并且它起作用但它有点恶心,它引发了两个问题,索引不准确,因为例如,4和1都具有相同的索引,如果它不是一个完美的正方形,它就不会写任何东西

1 个答案:

答案 0 :(得分:3)

while循环中,继续条件应为low <= high && !found而不是low < high && !found