Javascript的新特性。有人能帮我调试我的程序吗?
我正在尝试用javascript实现一个二进制搜索,我对JS一无所知。我主要习惯C++语法,所以我有点难以打破我的习惯。 当我在html文档中包含此脚本时,如果数组大小小于1,它将无法退出脚本,并且如果我输入无序数组,它不会触发数组顺序警报。此外,该程序似乎从未完成while循环,因此我不知道是否还有其他问题 任何帮助都将不胜感激Javascript的新特性。有人能帮我调试我的程序吗?,javascript,debugging,Javascript,Debugging,我正在尝试用javascript实现一个二进制搜索,我对JS一无所知。我主要习惯C++语法,所以我有点难以打破我的习惯。 当我在html文档中包含此脚本时,如果数组大小小于1,它将无法退出脚本,并且如果我输入无序数组,它不会触发数组顺序警报。此外,该程序似乎从未完成while循环,因此我不知道是否还有其他问题 任何帮助都将不胜感激 var size = parseInt(prompt("Enter the size of the array:")); if(size < 1) {
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 size=parseInt(提示(“输入数组的大小:”);
如果(尺寸<1){
警报(“错误:您输入的数组大小值不正确!”);
返回;
}
var-arr=[size];
var input=parseInt(提示(“按递增顺序输入数组中的数字,”
+用空格分隔,然后按enter键:);
arr=输入。拆分(“”);
var checkOrder=函数(数组){
对于(变量i=0;i数组[i+1]){
返回false;
}
}
返回true;
}
如果(!检查订单(arr)){
警报(“为数组输入的值不是按升序排列的!”);
}
var search=parseInt(提示(“在数组中输入要搜索的数字:”);
var-lp=0//左端
var rp=尺寸//右端点
var-mid=0;
var计数器=0;
var=false;
while(lp搜索){
rp=mid+1;
计数器++;
}否则{
lp=中等;
计数器++;
}
}
如果(!找到){
警报(“在数组中找不到值“+search+”);
警报(“我浪费了“+计数器+”检查以查找不在数组中的值!”);
返回;
}
上面的代码可能不是您想要的。这将创建一个包含一个元素的数组,该元素的值为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])
var input=prompt('空格分隔的数字:')
变量数组=输入。拆分(“”)
如果(array.length==0){
警报('.'.');返回
}
对于(var i=0;i
一种简单的调试方法是使用chrome调试器。在chrome中打开html文件,然后按“Ctrl”+“Shitf”+“J”。然后,您可以在脚本中设置断点,并查看可能出现的问题
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])