Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 理解功率集的大O_Algorithm_Big O - Fatal编程技术网

Algorithm 理解功率集的大O

Algorithm 理解功率集的大O,algorithm,big-o,Algorithm,Big O,我写了一个幂集的算法,写为p(a)。只是学习算法的时间复杂性(Big-O),所以如果我错了,请纠正我 算法: function powerSet(int[] a ){ ArrayList pw = new ArrayList(); pw.add(" "); for (int i = 1; i <= a.length; i++) //O(n){ ArrayList<String> tmp = new ArrayList<String>();

我写了一个幂集的算法,写为p(a)。只是学习算法的时间复杂性(Big-O),所以如果我错了,请纠正我

算法:

function powerSet(int[] a ){
ArrayList pw = new ArrayList();
pw.add(" ");
for (int i = 1; i <= a.length; i++) //O(n){
            ArrayList<String> tmp = new ArrayList<String>();

            for (String e : pw)//O(n) {
                if(e.equals(" "))
                    tmp.add(""+a[i-1]) //contanst time;
                else
                    tmp.add(e+a[i-1]) //constant time;
            }
            pw.addAll(tmp)//O(1);
        }
        return pw;
}
功能功率集(int[]a){
ArrayList pw=新的ArrayList();
pw.添加(“”);

对于(int i=1;i 1)类似于2^n,因为我正在枚举所有可能的子集。

外循环运行的次数是
a.length
。内循环运行的次数是
pw.length
,但这会随着函数的运行而增加。所以不能说它们都是
O(n)
。另外,
pw.addAll(tmp)
不是常数时间

这里,渐近时间复杂度与调用
tmp.add()
的次数相同,它等于
pw
的最终大小:
O(2^n)