Javascript 建设性气泡排序未按预期工作
我试图在JavaScript中创建一个简单的冒泡排序,但无法理解为什么我的代码不工作,问题似乎来自第二个if语句,我不知道确切的问题,因为我正在测试的浏览器在使用此代码时拒绝加载页面Javascript 建设性气泡排序未按预期工作,javascript,sorting,bubble-sort,Javascript,Sorting,Bubble Sort,我试图在JavaScript中创建一个简单的冒泡排序,但无法理解为什么我的代码不工作,问题似乎来自第二个if语句,我不知道确切的问题,因为我正在测试的浏览器在使用此代码时拒绝加载页面 var arr = [4, 6, 0, 3, -2, 1]; var arr2 = [arr[0]]; arr.forEach(function(elem){ for(var j=0; j<arr2.length; j++){ if(elem < arr2[j]){
var arr = [4, 6, 0, 3, -2, 1];
var arr2 = [arr[0]];
arr.forEach(function(elem){
for(var j=0; j<arr2.length; j++){
if(elem < arr2[j]){
arr2.splice(j, 0, elem);
break;
}
//if number is largest on last iteration add it to the end of the array
if(j == arr2.length-1){
console.log(elem);
//problem seems to be here
arr2[arr2.length] = elem;
}
}
});
console.log(arr);
console.log(arr2);
如果低于arr[j],则使用.splice将elem添加到数组中,但从未删除elem的旧实例。其次,您总是添加项目数组,并且它总是变得越来越大。您需要从数组中取出elem的旧实例,以便数组长度在每次迭代中保持不变
所以,在某个地方,您应该将1传递给splice的第二个参数,以便从数组中取出一些内容
我正在测试的浏览器在使用此代码时拒绝加载页面这意味着什么?你犯了什么错误?如果是这种情况,则错误不太可能与冒泡排序有关,也可能是语法错误。我的意思是浏览器在加载页面时卡住了,因此我必须实际关闭页面才能停止。奇怪的是,我不知道为什么会发生这种情况……或者可能是一个无限循环阻塞了浏览器;我想你是在开账单。@insertUserName这里我想你有点问题了,我将尝试在最后一个if语句中添加一个中断