HyungSunKim
HyungSun
HyungSunKim

티스토리

블로그 메뉴

  • YouTube
  • 분류 전체보기 (80)
    • 게임 엔진 (13)
      • GraphicsEn.. (5)
      • EditorTool (1)
      • ComponentE.. (7)
    • 컴퓨터공학 (11)
      • 운영체제 (7)
      • 하드웨어 (4)
    • C++ (15)
    • 자료구조,알고리즘 (12)
    • 상용엔진 (4)
      • Unity (4)
      • Unreal (0)
    • Project (8)
      • EATER (4)
      • 겜블 리볼버 (0)
      • 팽귄엔 하이드 (0)
      • 사무라이 쉐도우 (1)
    • 게임 리뷰 (1)
    • 코딩 테스트 문제 (11)
    • 수학,물리 (3)
    • 회사생활 (0)
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
HyungSunKim

HyungSun

시간복잡도
자료구조,알고리즘

시간복잡도

2022. 12. 14. 18:46

시간 복잡도란?

문제를 해결하기 위한 알고리즘의 로직을 코드로 구현할 때, 시간 복잡도를 고려한다는 것은

입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?라는 말이다.

 

효율적인 알고리즘을 구현한다는 것은 바꾸어 말해 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한

알고리즘을 구성했다는 말이다.

그리고 이 시간 복잡도는 주로 빅-오 표기법(Big- O)을 사용해 나타낸다.

 

Big- O 표기법이란?

최악의 경우를 고려하므로, 프로그램이 실행되는 과정에서 소요되는 최악의 시간까지 고려할 수 있기 때문이다.

"최소한 특정 시간 이상이 걸린다" 혹은 이 정도 시간이 걸린다. 를 고려하는 것보다.

"가장 느릴 때 이 정도 시간까지 걸릴 수 있다"를 고려해야 그에 맞는 대응이 가능하다.

 

입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가? 를 표기한 방법이다.

 

Big- O 표기법의 종류

1. O(1)

2. O(n)

3. O(log n)

4. O(n2)

 

1.O(1)

입력값의 크기와 관계없이 즉시 출력 값을 얻어낼 수 있다는 의미

입력값이 많더라도  즉시 값을 얻을 수 있다.

2. O(n)

선형 복잡도라고 부르며 입력값이 증가함에 따라 시간 또한 같은 비율로 증가하는 형태

입력값이 많으면 그만큼 시간도 증가

3. O(log n)

이진 검색  속도와 같다고 생각하면 된다.

8개의 데이터를 탐색한다고 했을 때 찾고자 하는 수가 1일 때

이진트리는 절반인 1~4 또는 5 ~ 8 둘 중 하나의 노드를 탐색한다.

 

 다음 1~4 4개의 데이터에서 절반인 1~2 노드 중에 데이터를 찾는다.

따라서 문제를 해결하는 데 필요한 단계들이 연산마다 줄어듦

 

4. O(n ^ 2)

log n과 반대로 단계가 진행될수록 연산 횟수가 증가

이중 for문이라고 생각하면 된다.

 

 

'자료구조,알고리즘' 카테고리의 다른 글

알고리즘- 정렬(insertion sort)  (0) 2023.03.06
알고리즘 - 정렬(Selection Sort)  (0) 2023.03.03
알고리즘- 정렬(Bubble Sort)  (0) 2023.03.02
자료구조-해시 테이블(Hash Table)  (0) 2023.02.28
자료구조-그래프  (0) 2022.08.09
자료구조-트리(Tree)  (0) 2022.08.08
자료구조-배열(Array)  (0) 2022.08.07
자료구조-연결 리스트(Linked List)  (0) 2022.08.06
    '자료구조,알고리즘' 카테고리의 다른 글
    • 알고리즘- 정렬(Bubble Sort)
    • 자료구조-해시 테이블(Hash Table)
    • 자료구조-그래프
    • 자료구조-트리(Tree)
    HyungSunKim
    HyungSunKim
    개인 공부 정리용 블로그

    티스토리툴바