私はこのアルゴリズムのシータの複雑さを見出そうとしています。 (aは整数のリストである)一方アルゴリズムの時間複雑度 - nまたはn * n?
def sttr(a):
for i in xrange(0,len(a)):
while s!=[] and a[i]>=a[s[-1]]:
s.pop()
s.append(i)
return s
、私はappend
がn
(配列の長さ)が実行されていると言うことができ回、そうpop
すぎて、私は検討すべき最後の事はありますwhile
実行可能な条件はおそらく2n
回である。
これは、このアルゴリズムが最大で4*n
であると言うことができるので、THETA(n)です。
ただし、償却分析ではありませんか?一方
私はこれを言うことができます。
2つのネストされたサイクルがあります。 for
サイクルは正確にn
回実行されています。 while
サイクルは、最大でn
回実行できます。これは、各繰り返しでアイテムを削除する必要があるためです。だから、複雑さはTHETA(n * n)です。
私はTHETAを計算したいが、これら2つのオプションのうちどれが正しいかわからない。アドバイスをいただけますか?
シータは(n)であり、償却分析には含まれません。私は今は正式な証拠がありませんが、私は後でそれを考え出します。クールな質問、btw。 –