基本スキル探索#1-時間複雑度
時間の複雑さとは?
重要な要素
マーキングほう
BigO(Big-O)記号:O(N)
入力nによって決定される時間複雑度関数
式の計算方法
O(1)
def print_item(something_list, item_num):
print(something_list[item_num])
時間複雑度O(1)O(n)
nでn回、2 n回、4 n+2回など実行→全てO(n)と表記
def print_double_forloop(n):
for i in range(n):
print(i)
for j in range(n):
print(j)
O(n2n^2n2)n,n 2 n^2 n 2回,n 2+100 n^2+100 n 2+100 n 2+100回等により実行→全てO(n 2 n^2 n 2 n 2)と表記する
def print_double_forloop(n):
for i in range(n):
for j in range(n):
print(i * j)
O(lognlognlogn)nの検出範囲は1回行うごとに半分に減少→O(lognlognlogn)[木を用いたときの観察]
def binsearch(x_list, target):
min_point, max_point = 0, len(x_list)
while True:
if a == b:
return -1
center = (a + b) // 2
if x_list[center] == target:
return center
if x_list[c] > target: # 구간을 왼쪽 절반으로 줄임
min_point, max_point = min_point, center
else: # 구간을 오른쪽 절반으로 줄임
min_point, max_point = center + 1, max_point
def print_powers_of_two(n):
i = 1
while i < n:
print(i)
i = i * 2
O(2n)2^n)2n)O(lognlognlogn)とは逆に,nを1個増加するごとに約2倍増加する.→ O(2n)2^n)2n)
function func (num){
if(num <= 1){
return num;
}else{
return func(num-1) + func(num-2);
}
}
Reference
この問題について(基本スキル探索#1-時間複雑度), 我々は、より多くの情報をここで見つけました https://velog.io/@ehddnr/기본기-톺아보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol