建设性泡沫排序不按预期工作

时间:2015-05-29 17:39:54

标签: javascript sorting bubble-sort

我试图在JavaScript中创建一个简单的冒泡排序并且无法理解为什么我的代码不起作用,问题似乎来自第二个if语句,我不知道确切的问题,因为浏览器I& #39;我在使用此代码时拒绝加载页面进行测试。

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);

1 个答案:

答案 0 :(得分:0)

如果elem低于.splice,则会将arr[j]添加到数组中,但您永远不会删除elem的旧实例。顺便说一句,你总是添加items数组,它总是越来越大。您需要从数组中取出elem的旧实例,以便从迭代到迭代,数组长度保持不变。

所以,在某个地方,你应该将1传递给splice的第二个参数,以从数组中取出一些东西。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice