繁体   English   中英

Javascript新手。 有人可以帮我调试我的程序吗?

[英]New to Javascript. Can someone help me debug my program?

我正在尝试用javascript实现二进制搜索,而且我是JS的新手。 我主要习惯于C ++语法,所以我打破任何习惯都有点困难。

当我在html doc中包含此脚本时,如果数组大小小于1则无法退出脚本,如果输入无序数组,则不会触发数组顺序警报。 另外,程序似乎永远不会完成while循环,所以我不知道是否还有其他问题。

任何帮助,将不胜感激!

var size = parseInt(prompt("Enter the size of the array:"));

if(size < 1) {
    alert("ERROR: you entered an incorrect value for the array size!");
    return;
}

var arr = [size];
var input = parseInt(prompt("Enter the numbers in the array in increasing order,"
        + " separated by a space, and press enter:"));

arr = input.split(" ");

var checkOrder = function(array) {
    for(var i = 0; i < size-1; i++) {
        if(array[i] > array[i+1]) {
            return false;
        }
    }
    return true;
}

if(!checkOrder(arr)) {
    alert("The values entered for the array are not in increasing order!");
}

var search = parseInt(prompt("Enter a number to search for in the array: "));

var lp = 0; //left endpoint
var rp = size; //right endpoint
var mid = 0;
var counter = 0;
var found = false;

while(lp <= rp) {
    mid = Math.floor((lp + rp)/2);
    if(arr[mid] == search) {
        alert("Found value " + search + " at index " + mid);
        counter++;
        found = true;
        break;
    } else if(arr[mid] > search) {
        rp = mid + 1;
        counter++;
    } else {
        lp = mid;
        counter++;
    }
}

if(!found) {
    alert("The value " + search + "was not found in the array");
    alert("I wasted " + counter + " checks looking for a value that's not in the array!");
    return;
}  
var arr = [size];

上面的代码可能不是你想要的。 这将创建一个包含一个元素的数组,其值为size的值。 您可以通过执行以下操作来创建具有特定初始大小的数组:

var arr = new Array(size);

你的输入法不对。
将数组初始化问题放在一边,该行

var input = parseInt(prompt(".."))

会给你一个号码。

实际上,您可以跳过提示输入数组大小

var input = prompt('Space separated numbers:')
var array = input.split(' ')
if (array.length == 0) {
    alert('._.'); return
}
for (var i = 0; i < array.length; i++)
    array[i] = parseInt(array[i])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM