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; //第一个数组的中位数(和除以2向上取整)
        // var num = 28; //第二个数组的中位数(和除以2向上取整)
        // var num = 10; //第三个数组的中位数(和除以2向上取整)
        var num = 12; //第四个数组的中位数(和除以2向上取整)
        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>

修正一下:网友提出 [1, 4, 4, 2, 4, 2, 7,100],代码执行的结果就不正确问题;

经过测试猜测可能是代码中的备注“中位数”不明确(指的是:数组元素的和除以2向上取整;原来是:最大的取整),造成“中位数”设置错误


版权声明:本文为qq_38360823原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。