Page 112 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 112

조금만 더!   컴퓨터에게 n / 2과 n의 차이는 크지 않아요!

                      n / 2번 실행했을 때 복잡도를 O(n / 2)가 아닌 O(n)으로 표현하는 이유는 n의 값이 무한히 커진다고 가정
                      했을 때, 그 값의 차이가 무의미해지기 때문입니다. 마찬가지로 100번만 실행하는 경우에도 O(100)이 아
                      닌 O(1)로 표기합니다. 컴퓨터가 100번을 계산하는 시간과 1번만 계산하는 시간의 차이는 사람이 느낄
                      수 없을 정도로 굉장히 작습니다.




                   [표 3-1] 선형 검색에서 각 단계의 실행 횟수와 복잡도
                      단계         실행 횟수             복잡도

                       1            1               O(1)
                       2          n / 2             O(n)

                       3          n / 2             O(n)
                       4            1               O(1)

                       5          n / 2             O(n)
                       6            1               O(1)


                   그런데 n이 점점 커지면 O(n)에 필요한 계산 시간은 n에 비례하여 점점 길어집니다. 이와
                   달리 O(1)에 필요한 계산 시간은 변하지 않습니다. 일반적으로 O(f(n))과 O(g(n))의 복잡
                   도를 계산하는 방법은 아래와 같습니다.



                     O(f(n)) + O(g(n)) = O(max(f(n), g(n)))

                      max(a, b)는 a와 b 가운데 큰 쪽을 나타내는 함수입니다.


                   2개 이상의 복잡도로 구성된 알고리즘의 전체 복잡도는 차원이 더 높은 쪽의 복잡도를 우선
                   시합니다. 둘이 아니라 셋 이상의 계산으로 구성된 알고리즘도 마찬가지입니다. 다시 말해 전

                   체 복잡도는 차원이 가장 높은 복잡도를 선택합니다. 그러므로 선형 검색 알고리즘의 복잡도
                   를 구하면 아래처럼 O(n)이 됩니다.


                     O(1) + O(n) + O(n) + O(1) + O(n) + O(1) = O(max(1, n, n, 1, n, 1)) = O(n)










                   112   C 알고리즘
   107   108   109   110   111   112   113   114   115   116   117