[자료구조/알고리즘] 자료구조(Data Structure) 와 알고리즘(Algorithm)
2022. 5. 2. 11:01ㆍ자료구조 알고리즘
자료구조
- 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미
구분 | 종류 | 특징 | 사용 예시 |
선형 | Array | - 같은 타입의 자료가 연속적으로 저장 - 고정된 크기 장점 - 인덱싱되어있으므로 인덱스로 접근가능 -> 검색과 정렬에 용이 함 단점 - 추가/삭제에 비효율적 - 삭제시 해당 영역이 메모리를 차지하므로 메모리 낭비 발생 |
- 삽입 정렬,빠른 정렬,버블 정렬 및 병합 정렬 같은 정렬 알고리즘 |
LinkedList | - 노드를 단위로 한다. 노드는 자료와 다음 노드를 가리키는 참조값으로 구성 - 단순 연결 리스트(다음 가리키는 노드가 없으면 마지막 값),원형 연결 리스트 장점 - 동적인 데이터 추가/삭제에 효율적 - 대용량 데이터 처리에 적합 단점 - 물리적 순서를 가지고 있지 않으므로 특정 원소 접근이 비효율적 - 참조를 위한 추가적인 메모리 공간 필요 |
- Alt + tab 을 이용한 화면 전환 |
-> Array와 LinkedList는 하단 자료구조를 구현하는 데 사용되는 기본 자료구조
선형 | Deque | - 양방향 추가/삭제가 가능한 선형 구조 - 스택과 큐의 성질을 모두 가지고 있는 자료구조 |
|
Stack | - 데이터를 입력되는 순서대로 정렬 - 순서가 보존되는 선형 데이터 구조 - LIFO (push, pop) 단방향 구조(top 에서만 이뤄짐) |
- 실행 취소 | |
Queue | - FIFO (enqueue, dequeue) - 삭제(front) 삽입(rear) 에서 이뤄지는 양방향 구조 |
- 대기열 시스템 - 멀티 스레딩에서 스레딩 관리 |
|
HashTable | - 해시 함수를 사용하여 변환한 값을 index 삼아 key와 value를 저장 - 데이터 크기 관계없이 추가/삭제에 효율적 |
- Set 데이터 구조 구현 | |
비선형 | Graph | - 노드(vertices) 사이에 엣지(edge)가 있는 컬렉션 - 연결되어있는 원소간의 관계를 표현한 자료구조 |
- GPS에서 위치와 경로를 나타내는데 사용 |
Tree | - 그래프가 계층적 구조를 가진 형태 - 상위 노드를 가지고 있음 |
- Binary Trees(이진 트리) - Binary Search Tree(이진 검색 트리) - Heap |
|
Heap | - Binary Tree - 최소 힙 : 부모의 키 값이 자식의 키 값보다 작거나 같음 - 최대 힙 : 부모의 키 값이 자식의 키 값보다 크거나 같음 |
- heap 정렬 알고리즘, 우선순위 큐 |
알고리즘
- 알고리즘은 어떤 일을 해결하기 위한 방법이다. 자세히 말하면 수학, 컴퓨터과학 등의 분야에서 어떠한 문제를 풀어내기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미
유사한 글
[자료구조/알고리즘] Java Collection/kotlin collection 과 자료구조
Kotlin Collection Collection 이 인터페이스는 읽기 전용 컬렉션의 일반적인 동작을 나타냅니다 크기 검색, 항목 구성원 확인 등 MutableCollection 추가 및 제거와 같은 쓰기 작업이 있는 컬렉션입니다. 구
soy0314.tistory.com
'자료구조 알고리즘' 카테고리의 다른 글
[자료구조/알고리즘] Java Collection/kotlin collection 과 자료구조 (7) | 2022.05.02 |
---|