자료구조의 필요성

데이터를 효과적으로 저장하고, 처리하는 방법에 대해서 바르게 이해하기 위해

불필요하게 메모리와 성능을 낭비하지 않기 위해

 

자료구조와 알고리즘

효율적인 자료구조 설계를 하기위해 알고리즘 지식이 필요합니다

또 효율적인 알고리즘을 작성하기 위해서는 문제 상황에 맞는 적절한 자료구조가 사용되어야 합니다

따라서 자료구조론과 알고리즘 이론은 모두 동일선상에 놓을 수 있습니다

 

기본적인 자료구조들

선형구조

(자료를 구성하는 원소들을 순차적으로 나열시킨 형태)

  • 배열
  • 연결 리스트
  • 스택

비선형 구조

  • 트리(Tree)
  • 그래프(Graph)

 

프로그램의 성능 측정 방법론

  • 시간 복잡도(Time Complexity) 알고리즘에 사용되는 연산 횟수를 의미합니다
  • 공간 복잡도(Space Complexity) 알고리즘에 사용되는 메모리의 양을 의미합니다

효율적인 알고리즘을 사용한다고 가정했을 때 일반적으로 시간과 공간은 반비례 관계입니다.

 

시간 복잡도를 표현할 때는 최악의 경우를 나타내는 Big-O 표기법을 사용합니다

이 때 항상 큰 항과 계수만 표시합니다

O(3n^2 + n) = O(n^2)

현실적의 다양한 문제에서는 시간 제한이 1초 정도라고 생각하시면 됩니다

 

공간 복잡도를 표기할 때는 일반적으로 MB 단위로 표기합니다

int a[1000] = 4KB

int a[1000000] = 4MB

int a[2000][2000] = 16MB

 

 

 

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

스택  (0) 2021.02.27
양방향 연결 리스트  (0) 2021.02.27
연결 리스트  (0) 2021.02.17

+ Recent posts