자료구조
- 데이터 집단을 어떻게 관리 해야할까?
- 기초적인 배열도 자료구조지만 한계가 있음
- 자료구조는 수많은 데이터를 효율적으로 관리하는 기법이다
자료구조란?
- 자료를 왜 정리해서 보관해야 할까?
- 방대한 양의 자료가 있고 규칙없이 막 던져둔다면 필요할 때 찾기힘듬
- 물건을 분류별로 나열해 놓으면 나중에 찾기 쉽듯, 데이터도 어떤 형태로 배치하고 분류하는지 따라 더 찾기 쉬워짐
- 자료를 정리하는 기준
- 순서대로 배치해 데이터가 어디있는지 안다면 더 쉽게 접근가능
- 데이터 간의 관계도를 구축해 하나의 데이터를 불러들이면 연관된 데이터가 어떤게 있는지 참조도 가능
대표적인 자료구조의 형태
- 선형 자료구조
- 일렬로 쭉 나열된 형태로 원하는 자료가 어떤 위치에 있는지 안다면 금방 찾을 수 있음
- 비선형 자료구조
- 자료 사이의 관계도를 표현할 때 사용할 수 있음
자료구조 효율 판단
- 효율을 판단하는 이유
- 더 좋은 성능의 프로그램을 만들기 위해
- Big-O 표기법
- 데이터 연산에 대한 성능을 표현하는 수학적 표기법
- 알고리즘에 대한 성능을 예측하는 것이 목적
- 공간 복잡도
- 프로그램의 실행부터 완료까지 필요한 저장공간의 양
- 현대의 PC는 하드웨어의 발달로 덜 중요한 개념이 되었음
- 시간 복잡도
- 프로그램의 실행부터 완료시까지 필요한 과정의 양
- 알고리즘의 효율성을 결정하는 중요한 요소
- 읽기, 삽입, 검색, 삭제에 대한 동작에 대해서 측정
요약
| 개념 | 측정 대상 | 표기법 | 관심 영역 |
| 시간 복잡도 | 연산 횟수 (실행 속도) | O (Big-O) |
입력이 커질 때 알고리즘이 얼마나 느려지는가
|
| 공간 복잡도 | 메모리 사용량 | O (Big-O) |
입력이 커질 때 메모리를 얼마나 더 사용하는가
|
| Big-O | 상한선 (Worst-Case) | O(N), O(N2), 등 |
알고리즘의 비효율성을 나타내는 표준
|
Big-O표기법
- 빅오 표기법은 알고리즘 실행 시간 또는 사용 메모리의 상한선 즉 최악의 경우의 성능을 나타냅니다
- 입력 데이터의 크기(N)가 증가함에 따라 알고리즘 성능이 얼마나 빠르게 나빠지는지 나타내는데 중점을 둠
| 표기법 | 명칭 | 성능 특징 (예시) |
| O(1) | 상수 시간 (Constant Time) |
입력 크기와 관계없이 일정한 시간이 걸림. (예: 배열의 특정 인덱스 접근)
|
| O(logN) | 로그 시간 (Logarithmic Time) |
입력 크기가 커져도 시간이 매우 느리게 증가함. (예: 이진 검색, Binary Search)
|
| O(N) | 선형 시간 (Linear Time) |
입력 크기에 비례하여 시간이 증가함. (예: 배열의 모든 요소 순회)
|
| O(NlogN) | 선형-로그 시간 (Linearithmic Time) |
비교적 효율적이며, 정렬 알고리즘에서 많이 사용됨. (예: 병합 정렬, Merge Sort)
|
| O(N2) | 2차 시간 (Quadratic Time) |
입력 크기의 제곱에 비례하여 시간이 증가함. 비효율적임. (예: 이중 루프를 사용한 버블 정렬)
|
'C# > 자료구조를 활용한 데이터 관리' 카테고리의 다른 글
| 그래프 와 트리 (0) | 2025.11.03 |
|---|---|
| 딕셔너리 (0) | 2025.11.03 |
| 스택과 큐 (0) | 2025.11.03 |
| 리스트와 링크드 리스트 (0) | 2025.10.14 |