[자료구조] 자료구조의 개요
728x90
반응형
자료구조란?
대량의 데이터를 효과적으로 저장, 처리하는 방법
기본적인 자료구조
-
선형구조
-
배열
-
연결 리스트
-
스택
-
큐
-
-
비선형 구조
-
트리
-
그래프
-
알고리즘이란?
어떤 문제를 풀기 위한 절차, 방법
자료구조와 알고리즘
서로 필요충분조건이다.
효율적인 자료구조 설계를 위해서는 알고리즘 지식이 필요 ↔ 효율적인 알고리즘을 작성하기 위해서는 문제 상황에 맞는 적절한 자료구조 사용해야 함
프로그램의 성능 측정 방법론
- 시간 복잡도(Time Complexity) : 알고리즘에 사용되는 연산 횟수를 의미
- 공간 복잡도(Space Complexity) : 알고리즘에 사용되는 메모리 양
- 수행 시간
최상 : 오메가 표기법 (Big-Ω Notation)
평균 : 세타 표기법 (Big-θ Notation)
최악 : 빅오 표기법 (Big-O Notation)
일반적으로 시간과 공간은 반비례적인 경향을 가지나, 최근에는 용량이 문제 되는 경우는 크게 없어 시간 복잡도가 우선시된다.
수행 시간 기준 중 주로 사용하는 것은 최악의 수행 시간이나 수행 시간의 기대치이며, 두 기준은 거의 동일하기 때문에 구분되지 않고 사용하는 경우가 많다.
시간 복잡도(Time Complexity)
알고리즘에 사용되는 연산 횟수
최악의 경우를 나타내는 Big-O표기법을 사용
O(3n^2 + n ) = O(n^2)
어차피 n이 무한정 커질 경우 상수는 무시할 수 있기 때문에 시간 복잡도를 표기할 때는 항상 큰 항과 계수만 표시한다.
// O(n)
int main(void)
{
int a,b;
cin >> a>> b;
int sum = 1;
for(int i=0; i<b ;i++)
{
sum *= a;
}
cout << sum;
}
// O(n^2)
int main(void)
{
int n;
cin >> n;
for(int i=0; i<n ;i++)
{
for( int j=0; j<=i; j++)
{
cout<< "*";
}
cout << '\n';
}
}
공간 복잡도(Space Complexity)
알고리즘에 사용되는 메모리 양
공간 복잡도를 표기할 때는 일반적으로 MB단위로 표기
int a[1000] : 4KB
int a[1000000] : 4MB
int a[2000][2000] : 16MB
결과
int형 변수는 4byte만큼의 공간을 차지 하기 때문에 int형 변수가 1000개 들어가는 공간 -> 4KB
2차원 변수로 2000*2000*4 => 16MB
8bit → 1byte
1000byte → 1KB
1000KB → 1MB
1000MB → 1GB
728x90
반응형
'Programming > 자료구조' 카테고리의 다른 글
[자료구조] 양방향 연결 리스트 (0) | 2020.07.12 |
---|---|
[자료구조] 단일 연결 리스트 (0) | 2020.07.08 |
[자료구조] 연결 리스트 (0) | 2020.07.08 |
댓글
이 글 공유하기
다른 글
-
[자료구조] 양방향 연결 리스트
[자료구조] 양방향 연결 리스트
2020.07.12 -
[자료구조] 단일 연결 리스트
[자료구조] 단일 연결 리스트
2020.07.08 -
[자료구조] 연결 리스트
[자료구조] 연결 리스트
2020.07.08