zoukankan      html  css  js  c++  java
  • 排列组合算法的javascript实现

    一、筛选数组内n个元素的组合情况


    function queue(arr, size) {
        if (size > arr.length) { return; }
        var allResult = [];

        (function (arr, size, result) {
            if (result.length == size) {
                allResult.push(result);
            } else {
                for (var i = 0, len = arr.length; i < len; i++) {
                    var newArr = [].concat(arr),
                        curItem = newArr.splice(i, 1);
                    arguments.callee(newArr, size, [].concat(result, curItem));
                }
            }
        })(arr, size, []);

        return allResult;
    }


    function choose(arr, size) {
        var allResult = [];

        (function (arr, size, result) {
            var arrLen = arr.length;
            if (size > arrLen) {
                return;
            }
            if (size == arrLen) {
                allResult.push([].concat(result, arr))
            } else {
                for (var i = 0; i < arrLen; i++) {
                    var newResult = [].concat(result);
                    newResult.push(arr[i]);

                    if (size == 1) {
                        allResult.push(newResult);
                    } else {
                        var newArr = [].concat(arr);
                        newArr.splice(0, i + 1);
                        arguments.callee(newArr, size - 1, newResult);
                    }
                }
            }
        })(arr, size, []);

        return allResult;
    }

    function showResult(result) {
        console.log('The number of result sets: ' + result.length);
        for (var i = 0, len = result.length; i < len; i++) {
            console.log(result[i]);
        }
    }


    var arr = ['姬光', '王子', '三桂', '科长'];

    showResult(choose(arr, 4));
    showResult(queue(arr, 4));
  • 相关阅读:
    Python—使用列表构造队列数据结构
    js数组及对象去重
    当z-index遇上transform
    echarts y轴百分比显示
    在vue-cli项目中使用echarts
    IE中在a标签里的图片会显示边框
    css 三种清除浮动(float)的方法
    js技巧
    深入理解 函数、匿名函数、自执行函数
    即时反应的input和propertychange方法
  • 原文地址:https://www.cnblogs.com/gavinjay/p/13963378.html
Copyright © 2011-2022 走看看