Big-O notation
4066 ワード
Big-O notation
インボリュートマークほう
時間の複雑さ
Complexity110100O(1)111O(log N)025O(N)110100O(N log N)020461O(N^2)110010000O(2^N)110241267650600228229401496703205376O(N!)13628800は表現できません
O(1): Constant
入力に関係なく、複雑さは同じです.
def sayHello():
print("hello world")
def sayHi():
print("hello world")
print("hello world")
# 두 method의 복잡도는 똑같음
O(N): Linear
入力が増加するにつれて,時間と空間の複雑さも線形に増加した.
def sayHello(n):
for _ in n:
print("hello world")
入力nを押して繰り返し文を実行します.O(N^2): square
2回繰り返し,2回繰り返しn.
def sayHello(n):
for x in n:
for y in n:
print(x,y)
O(log N)O(N log N)
所定の入力サイズで処理時間を増加させるソートアルゴリズムでは多く用いられる.
# 이진검색
def binary_search(n, item, first=0, last=None):
if not last:
last = len(n)
midpoint = (last-first)/2+first
if n[midpoint] == item:
return midpoint
elif n[midpoint] > item:
return binary_search(n,item,first,midpoint)
else:
return binary_search(n, item,midpoint,last)
時間複雑度の例
O(1) time
O(n) time
運転時間はnの入力サイズに比例する.
O(log n) time
実行時間は入力サイズのlogに比例します.
O(n log n) time
実行時間は、入力サイズと入力サイズのlog積に比例します.
O(n^2) time
実行時間は入力サイズの平方に比例します.
2つのネストリング
O(n!) time
すべてのシーケンスを生成します.
Ref:
Reference
この問題について(Big-O notation), 我々は、より多くの情報をここで見つけました https://velog.io/@stella317/Big-O-notationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol