Javascript:这个合并排序的Javascript实现有什么问题?
我正在尝试使用javascript实现合并排序。 以下是我发现逻辑上合理但在运行时失败的代码清单Javascript:这个合并排序的Javascript实现有什么问题?,javascript,mergesort,Javascript,Mergesort,我正在尝试使用javascript实现合并排序。 以下是我发现逻辑上合理但在运行时失败的代码清单 var a = []; for( i = 0 ; i < 10; i++){ a.push(parseInt(Math.random()*100000)); } function merge(a1, a2){ var res = []; var i = 0, j = 0; while( i <
var a = [];
for( i = 0 ; i < 10; i++){
a.push(parseInt(Math.random()*100000));
}
function merge(a1, a2){
var res = [];
var i = 0, j = 0;
while( i < a1.length && j < a2.length){
if( a1[i] < a2[j] )
res.push(a1[i++]);
else
res.push(a2[j++]);
}
while( i < a1.length )
res.push(a1[i++]);
while( j < a2.length )
res.push(a2[j++]);
return res;
}
function mergeSort(a){
if( a.length <= 1 )
return a;
var q = a.length/2;
x = mergeSort(a.slice(0,q));
y = mergeSort(a.slice(q));
return merge(x,y);
}
var a=[];
对于(i=0;i<10;i++){
a、 push(parseInt(Math.random()*100000));
}
函数合并(a1,a2){
var-res=[];
var i=0,j=0;
而(i 如果(a.length因为您没有用“var”声明这些变量,它们的作用域是全局的:
x = mergeSort(a.slice(0,q));
y = mergeSort(a.slice(q));
因为您没有用“var”声明这些变量,所以它们的作用域是全局的:
x = mergeSort(a.slice(0,q));
y = mergeSort(a.slice(q));
因为您没有用“var”声明这些变量,所以它们的作用域是全局的:
x = mergeSort(a.slice(0,q));
y = mergeSort(a.slice(q));
因为您没有用“var”声明这些变量,所以它们的作用域是全局的:
x = mergeSort(a.slice(0,q));
y = mergeSort(a.slice(q));
您的x和y变量是全局变量(因为您没有用var
声明它们为局部变量),因此每次调用mergeSort函数时,它都会更改相同的变量,从而导致非常意外的行为
修正:
函数合并排序(a){
如果(a.length您的x和y变量是全局变量(因为您没有用var
声明它们为局部变量),那么每次调用mergeSort函数时,它都会更改相同的变量,从而导致非常意外的行为
修正:
函数合并排序(a){
如果(a.length您的x和y变量是全局变量(因为您没有用var
声明它们为局部变量),那么每次调用mergeSort函数时,它都会更改相同的变量,从而导致非常意外的行为
修正:
函数合并排序(a){
如果(a.length您的x和y变量是全局变量(因为您没有用var
声明它们为局部变量),那么每次调用mergeSort函数时,它都会更改相同的变量,从而导致非常意外的行为
修正:
函数合并排序(a){
如果(a.length,谢谢,'var'ing他们解决了问题。通过这一点,我学会了如果我不给他们做var,他们就不属于本地范围。谢谢,'var'ing他们解决了问题。通过这一点,我学会了如果我不给他们做var,他们就不属于本地范围。谢谢,'var'ing他们解决了问题。通过这一点,我学会了如果我不给他们做var,他们就不属于本地范围然后它们不属于本地范围。谢谢,为它们设置变量修复了问题。通过这一点,我学会了如果我不设置变量,它们就不属于本地范围。谢谢,为它们设置变量修复了问题。通过这一点,我学会了如果我不设置变量,它们就不属于本地范围。谢谢,为它们设置变量修复了问题。通过这一点,我学会了如果我不给它们赋值,那么它们就不属于本地范围。谢谢,“给它们赋值”解决了问题。通过这一点,我学会了如果我不给它们赋值,它们就不属于本地范围。谢谢,“给它们赋值”解决了问题。通过这一点,我学会了如果我不给它们赋值,它们就不属于本地范围。