어읽로꾸거
[Javascript] 알아야 할 7가지 자료형 본문
www.educative.io/blog/javascript-data-structures
[
7 JavaScript data structures you must know
Data structures are a foundational part of JS programming, whether you're just starting out or you've been coding for years. Let's look at the 7 data structures you should never forget.
](https://www.educative.io/blog/javascript-data-structures)
이 글을 거의 번역함 보면 그냥 어떤 언어든 다 맞는말인거 같은데 왜 궂이 JS?
Array
- 장점
- 쉽게 만들수있음
- 복잡한 자료구조를 위한 기초
- 단점
- 고정된 크기
- 삽입/제거에 시간복잡도 큼
- 정렬하기 비효율적(트리 이런거에 비해서 인듯?)
- 응용
- 기본적 스프레드 시트
- 해쉬테이블
Queue
장점
- 동적인 크기
- 선입선출
- 런타임 적음 ??
단점
- 오래된 것만 받을 수 있음
응용
- 자주 자료를 받는 버퍼
- 순서가 중요한 음성메일
- 오래된 데이터가 먼저 처리되도록 함
Linked List
장점
- 효과적으로 추가/제거 가능
- Array 보다 덜 복잡하게 Restructing 가능
단점
- Array 보다 많은 메모리 사용
- 특정 순번 원소 탐색에 비효율적
응용
- 알지 못하는 위치에 빠른 추가 제거가 필요한 구조
Tree
- 장점
- 수직적 관계의 저장에 이상적
- 동적인 크기
- 추가와 제거가 빠름
- BST에서 삽입된 노드는 연속적으로 이어진다
- BST는 검색에 효율적
- 단점
- 노드 재배열하기에 느림
- 자식 노드는 부모 노드에 대한 정보가 없음(이건 만드는사람에 따라 다를텐데)
- BST는 해쉬테이블보다 느림
- BST는 균형이 맞지 않으면 선형시간이 걸림(Balanced BST가 좋지)
- 응용
- 파일 저장할때
- 검색/순서를 나열할때 매우 휼륭함
Graphs
- 장점
- 글자보다 빠르게 시각적으로 전달 가능
- 다양한 숫자들의 모델의 관계를 전달할 수 있음
- 단점
- 높은 수준에서, 글자를 이미지로 변환하는데 오래걸릴수 있음
- 얼마나 많이 연결되어있는지 보기 힘들 수 있음
- 응용
- 네트워크 표현
- 페북같은 SNS
Hash Tables (Map)
- 장점
- Key는 어떤 형태도 될 수 있음(배열은 숫자만 올 수 있음)
- 매우 효과적인 검색 함수
- 검색을 할때 일정한 회수의 연산
- 추가와 제거에 일정한 비용이 듬
- 단점
- 충돌 : 2개의 해쉬코드가 같거나 같은 값을 가리킬 경우 오류뜸
- 이런 에러는 흔하고 해쉬 함수를 검사좀 해봐야 한다
- 응용
- 데이터베이스 저장소
- 이름으로 주소찾기
'정리' 카테고리의 다른 글
[Python] Fast Api 에서 Eureka 연결하기 (0) | 2022.08.27 |
---|---|
[Python] Celery Execution Pools 셀러리 풀에 관하여 (0) | 2022.08.24 |
Visual Studio Code 터미널이 새창으로 열릴때 해결법 (0) | 2020.10.15 |
[Python] collections.deque 정리 (0) | 2019.09.28 |
[Java] HashMap, HashTable, ConcurrentHashMap 비교 (0) | 2019.07.01 |