天天看点

javascript将一个数组分成两个数组,并使各数组和只差最小

 当前测试数据均正确:若存在问题请指出

<script>
        // var list = [1, 2, 3, 5, 8, 9, 10, 11]; //第一个数组
        // var list = [11, 7, 2, 5, 9, 21]; //第二个数组
        // var list = [1, 2, 3, 5, 9];//第三个数组
        var list = [1, 4, 4, 2, 4, 2, 7];//第四个数组
        list = list.sort(function(a,b){return b-a});//倒序
        console.log(list);
        // var num = 25; //第一个数组的中位数(取大的整值)
        // var num = 28; //第二个数组的中位数(取大的整值)
        // var num = 10; //第三个数组的中位数(取大的整值)
        var num = 12; //第四个数组的中位数(取大的整值)
        var arr1=[], arr2=[], arrSum1=0; arrSum2=0, m=0, n=0;
        for(var i=0; i<list.length; i++) {
            var data = list[i];
            if(arrSum1 <= arrSum2 && (arrSum1 + data) <= num) {
                arr1[m++] = data;
                arrSum1 += data;
                continue;
            }
            arr2[n++] = data;
            arrSum2 += data;
        }
        console.log(arr1);
        console.log(arr2);
    </script>