Algorithm 理解功率集的大O
我写了一个幂集的算法,写为p(a)。只是学习算法的时间复杂性(Big-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>();
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)