天天看點

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>