Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C++
- 청년내일채움공제
- 생애첫계약
- 부분합알고리즘
- 튜터링
- 정보
- 네트워크
- 코딩테스트
- 취업사실신고
- 회사폐업
- HeadFirstDesignPatterns
- 자취준비
- 후니의쉽게쓴시스코라우팅
- 후니의쉽게쓴시스코네트워킹
- 전화영어
- IT기초
- 프로그래머스
- 동적계획법
- leetcode
- array
- 순열
- 캡쳐링
- 자료구조
- 막대기자르기
- 정보처리기사개정
- 실업급여
- 실업인정인터넷신청
- 모여봐요동물의숲
- 알고리즘
- 사회초년생
Archives
- Today
- Total
따봉도치야 고마워
배열과 리스트의 차이 본문
배열과 리스트
: 동일한 특성의 데이터들의 집합을 가리키는 자료구조
둘의 가장 큰 차이는 구조적 차이라고 생각한다.
배열의 경우 연속된 메모리 공간에 할당되고, 리스트의 경우 메모리가 연속적인 공간에 있지 않고 다음 노드를 가리키는 주소값을 가지고 있다.
이런 차이에서 오는 각각의 장단점을 알아보자.
*배열
(1)장점
- 구현이 쉬움
- 인덱스가 있어 조회에서 빠른 성능을 보여줌
- 연속된 메모리 공간에 할당되어 순차 접근에도 빠름
- 참조를 위한 추가 메모리 할당이 필요 없음
(2)단점
- 삽입/삭제 시 뒤에 요소들을 이동해야 해서 비효율적
- 선언 시 지정한 크기 변경 불가
- 메모리 재사용 불가 (초기 사이즈만큼 할당이 되고, 데이터가 없더라도 메모리를 차지하고 있음)
*리스트
(1)장점
- 삽입/삭제 시 전후 노드의 참조 관계만 수정하면 되기 때문에 효율적
- 크기가 고정적이지 않음
- 메모리 재사용 가능 (삭제 시 해당 노드의 참조가 사라져 GC에 의해 가용 메모리로 전환)
(2)단점
- 구현이 상대적으로 복잡
- 검색이 비효율적 (처음부터 순차적으로 검색해야 함)
- 참조를 위한 메모리가 필요
*결론
- 저장할 데이터의 개수가 정해져 있고 / 삽입, 삭제 작업이 적고 / 특정 위치의 데이터를 조회하는 작업이 많다면 배열
- 저장할 데이터의 개수가 미정이고 / 삽입, 삭제 작업이 많고 / 특정 위치 데이터를 조회하는 경우가 별로 없다면 리스트
'프로그래밍 > 공부' 카테고리의 다른 글
[디자인패턴] 디자인패턴이란? (2) | 2020.03.02 |
---|---|
교착상태(DeadLock)란? (0) | 2020.02.26 |
프로세스(Process)와 쓰레드(Thread)의 차이 (0) | 2020.02.26 |
[자료구조]해시테이블 (HashTable)이란? (0) | 2020.02.25 |
[c/c++] 배열 한번에 초기화하는 법 (0) | 2020.02.18 |
Comments