gpt4 book ai didi

algorithm - 理解大 O 的幂集

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:49 24 4
gpt4 key购买 nike

我已经为写为 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;
}

这个时间复杂度是O(n)*O(n) = O(n^2),还是像2^n那样的指数函数(c^n where c > 1),因为我在枚举所有可能的子集。

最佳答案

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

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

关于algorithm - 理解大 O 的幂集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com