다음은 오름차순으로 목록을 정렬하는 코드입니다. 함수 내에서 함수를 사용했습니다. 이제이 함수의 시간 복잡도를 계산하고 싶습니다. 내 측면에서 함수 "정렬"이 루프를 완료 할 때마다 "통합"함수가 호출된다는 계산을했습니다. 따라서이 함수에서는 매 함수 두 개가 사용됩니다. 그래서이 함수의 복잡도는 O (nlog (n))라고 결론을 냈습니다. 이 장을 처음 사용합니다. 그래서 이런 종류의 복잡성을 계산하는 방법을 알고 싶습니다. 위의 대답은 단지 나의 근사치입니다. 그리고 나는 진정한 답을 모르거나 해결책이나 암시를 가지고 있지 않습니다. 그래서 당신이 줄 때마다 대답을 기술하십시오. 감사합니다. . 내 코드는 다음과 같습니다.알고리즘의 시간 복잡도
def sort(lst):
def unite(l1, l2):
if len(l1) == 0:
return l2
elif len(l2) == 0:
return l1
elif l1[0] < l2[0]:
return [l1[0]] + unite(l1[1:], l2)
else:
return [l2[0]] + unite(l1, l2[1:])
if len(lst) == 0 or len(lst) == 1:
return lst
else:
front = sort(lst[:len(lst)/2])
back = sort(lst[len(lst)/2:])
L = lst[:] # the next 3 questions below refer to this line
return unite(front, back)
언제'sort4'가 발생합니까? – Hyperboreus
사실, 크기가 n1 + n2 = n 인 입력에 대해 '합치기'가 O (n^2) 사본을 만들기 때문에 실제로는 O (n^2) 이상입니다. (그리고 O (n log n)은 단어의 의미에서 그 근사치가 아닙니다.) – delnan
아,하지만 함수에서 함수 호출을 가진 몇 가지 예제를 보았습니다. 그리고 그들은 O (log (n))의 복잡성을 가지고 있습니다. – user3096874