개발 관련 부가 지식/기타

자료구조 기초 정리

Developer-Choi 2023. 1. 18. 22:59
728x90
728x90

자료구조란

1. 선형 자료구조 (앞과 뒤가 있고, 순서가 있다)

배열(array)

-> 논리적인 순서와 물리적인 순서가 같음, 배열이 중간에 빌 수가 없음

배열의 장점: index 연산을 할 수 있어 검색이 빠름 O(1)

배열의 단점: insert , delete를 할 때 O(n)의 시간이 걸림

 

연결리스트(LinkedList)

-> 노드를 사용, 값이 추가할 때 마다 메모리를 할당 받고, 값은 서로 링크로 연결, 데이터의 물리적 위치와 논리적 위치가 다를 수 있음

장점 : 배열에 비해 insert, delete 가 빠름

단점 : index 연산이 불가능, 검색이 느림

 

스택 

-> 후입선출(LIFO, Last-In-First-Out) 구조로 마지막 데이터가 먼저 나오게 된다. 

 

큐 

-> 선입선출(FIFO, First in first out) 구조로, 들어온 순서대로 데이터가 나간다. 

 

 

2. 비선형 자료구조

힙  👀

-> 최대값 혹은 최소값을 빠르게 찾기 위한 구조

-> 최대힙, 최소힙이 있으면 최소힙 기준으로는 부모가 자식보다 항상 작아야 한다.🎈

-> 삭제와 삽입의 시간복잡도는 O(logN) 

 

이진 탐색 트리  

-> 자식노드가 2개 이하인 트리로 검색을 위한 자료 구조

-> 자료의 중복을 허용하지 않음

-> 왼쪽자식은 부모보다 작고, 오른쪽 자식은 부모보다 크다. 😁

-> 삽입 , 검색의 시간복잡도는 O(logN) 

 

(jdk 클래스에서 TreeSet, TreeMap 등 Tree로 시작되는 클래스는 정렬을 지원함)

 

자가 균형 트리

-> 편향된 데이터 (ex. 부모보다 작은 데이터만 있어서 왼쪽으로만 뻗어나간 데이터) 인 경우 시간복잡도가 N이 되는데,

이러한 편향을 개선한 이진 탐색 트리이다. 😀

-> AVL 트리, Red Black 트리가 있다.

 

해시 👀

-> 검색을 위한 자료 구조

-> key, value 한쌍으로 되어 있고 key는 중복을 허용하지 안음

-> List에 N개의 데이터가 있다고 할 때, 검색 시간 복잡도는 O(N) 이다. (리스트를 돌면서 찾아야 하기 때문에)

해시는 시간 복잡도가 O(1) 이다. 😲

(1) key가 Hash Function 통해 hash 값으로 변경되어 value랑 매칭되어 저장된다.

(2) hash 값을 인덱스처럼 쓰기에 검색 시간 복잡도가 O(1) 이다

 

 

👏

👏