728x90
반응형
1. 자료구조(Data Structure)란?
자료구조 정의
- 자료구조(Data Structure)는 데이터를 효율적으로 저장하고 관리하기 위해 조직하는 방법과 규칙
- 효과적인 자료구조를 통해 데이터를 빠르게 접근하고, 삽입, 삭제, 정렬, 탐색 등의 작업을 효율적으로 수행할 수 있음
- 다양한 자료구조들은 특정 상황에 맞게 최적화되어 있음
- 각 자료구조는 특정한 시간과 공간 효율성을 가짐
자료구조 분류
Primitive Data Structure
- 기본 데이터 유형
- 하나의 값만 가질 수 있음
- 고정된 크기를 가짐
- 정수, 실수, 문자, 논리형 등
Non-Primitive Data Structure
- 복합 데이터 유형
- 한번에 여러 값을 가질 수 있음
- 가변 크기를 가짐
- 배열, 연결리스트, 스택, 큐, 트리, 그래프 등
Linear Structure
- 데이터들이 일렬로 저장되어 있는 형태
- 메모리에서 연속적인 공간에 데이터를 저장하거나
- 각 요소가 다음 요소와 직접 연결됨
- 탐색이 간단하고 한 번에 하나의 방향으로 이동 가능
- 배열, 연결리스트, 스택, 큐 등
Non-Linear Structure
- 데이터가 계층적 또는 비연속적으로 되어있는 형태
- 비연속적인 메모리 사용을 허용
- 여러 경로로 접근 가능
- 트리, 그래프 등
시간 복잡도
- 알고리즘이 실행되는 데 걸리는 시간을 입력 크기(n)와의 관계로 표현한 것
- 입력 크기가 커질 때 알고리즘의 실행 시간이 어떻게 변하는지를 나타내어, 알고리즘의 효율성을 평가하는 데 사용됨
- 일반적으로, 시간 복잡도는 최악의 경우를 기준으로 하여 빅오(Big-O) 표기법을 사용해 표현함
Big-O
- 입력 크기 n이 증가할 때 실행 시간이 어떻게 증가하는지 나타내는 것
- 예를 들어, 실행 시간이 3𝑛^2+2𝑛+1인 알고리즘이 있을 때, n이 커질수록 𝑛^2 항이 가장 큰 영향을 주므로, 시간 복
- 도는O(n²)이 된다.
- 종류
- O(1) - 상수 시간(Constant Time) : 입력 크기와 상관없이 실행 시간이 일정. ex) 배열의 특정 인덱스에 접근
- O(log n) – 로그 시간(Logarithmic Time) : 입력 크기가 커질수록 실행 시간이 매우 완만하게 증가. ex) 배열에 이진 탐색으로 요소를 찾는 경우
- O(n) - 선형 시간(Linear Time) : 입력 크기에 비례하여 실행 시간 증가. ex) 배열의 모든 요소를 한 번씩 확인하는 경우
- O(n log n) - 로그 선형 시간(Log-linear Time)
- O(n²) - 이차 시간(Quadratic Time)
- O(2^n) - 지수 시간(Exponential Time)
- O(n!) - 팩토리얼 시간(Factorial Time)
728x90
반응형
'Software > Common' 카테고리의 다른 글
[자료구조] 3. 연결 리스트(Linked List) (0) | 2024.11.10 |
---|---|
[자료구조] 2. 배열(Array) (1) | 2024.11.09 |
사용자 변수 vs 시스템 변수 (1) | 2024.04.28 |
환경변수 PATH란? (0) | 2024.04.28 |
컴파일 언어 vs. 인터프리터 언어 (0) | 2023.11.12 |
댓글