IT이야기/IT Level-up

[생활코딩] 자료구조 기본 개념, 그리고 배열과 리스트(Array & List)

FelixShin 2016. 2. 29. 00:15
반응형

요즘 자료구조에 관심이 많아져서 생활코딩에서 강의를 보게 되었다.

아래는 강의를 보며 정리한 내용이다.




아래와 같이 자료구조에 대한 간단한 개념, 그리고 자료구조의 기본인 배열과 리스트에 대한 핵심 내용이 나와있다.

(만약 부족한 것이 있다면 자유로이 말씀해주세요^^)


개념. 데이터 스트럭쳐란(자료구조)란 ?

1. 현실의 문제를 프로그래밍적으로 표현하는 것을 익히는 것


Tree(트리구조) 

ex) 조직도





Set(집합)

: 공통적인 것을 추출



Graph

: 최단거리로 가는 방법



2. 데이터를 효율적으로 관리하는 것


비교 : 분류하는 것



정리정돈의 진화


문서 -> 책 -> 책장 -> 도서관 -> 인터넷

적은데이터에는 의미없지만 데이터가 많아지면 필요함





적용. 데이터 구조의 기본, Array와 List

 

1. 배열(Array) : 이미 알고 있는 데이터 스트럭처


- 거의 모든 언어에서 지원

- 많은 데이터 스트럭처들이 배열을 부품으로 사용

- 데이터가 많아지면 그룹관리가 필요

- 여러 데이터를 하나의 이름으로 그룹핑하여 관리하기 위한 데이터 스트럭쳐


- 배열 한개는 index와 value로 이루어짐.

- Element : index + value

- 배열은 index를 이용해 데이터를 저장하고 가져옴(중요)

Iterator (반복 작업을 위해 필요)


Java의 Array

1) create


2) 배열 단점

- 크기가 정해져 있음

- 기능이 없음 (생성된 엘리먼트의 개수를 알 수 없음)


3) 배열 장점

- 메모리나 처리속도가 좋음


2. Java의 List

1) 특징

- 순서대로 저장됨

- 중복 허용됨


2) 기능

- 처음, 끝, 중간에 엘리먼트를 추가/삭제하는 기능

- 리스트에 데이터가 있는지를 체크하는 기능

- 모든 데이터에 접근할 수 있는 기능


3) 언어별 비교

C :  List 지원안하고 Array만 지원

직접 만들거나 라이브러리 써야함


JavaScript : 배열이 리스트임

- splice로 배열 삭제 가능


Phython : Array대신 List를 제공, 리스트가 배열

- pop을 이용해서 데이터 삭제 가능


Java : Array와 List 독립적으로 모두 지원

- List에서 add, remove 메소드 제공


- Java는 두종류의 List를 지원

* LinkedList : 데이터 추가/삭제시 빠름, 인덱스 조회 느림

* ArrayList : 데이터 추가/삭제시 느림 , 인덱스 조회 빠름


결론 

: 최근 언어는 List를 기본적으로 지원함  

: 데이터 스트럭쳐는 언어마다 다름


3. Array와 List 차이

Array는 index가 중요

List는 데이터 저장의 순서가 중요함


Array는 추가하면 덮어씀, 리스트는 추가하면 밀림


데이터 삭제시 Array는 비워짐(바뀌지 않음)


List는 비여있는 데이터 없이 나열됨(삭제시 element가 변동 있음)




출처 : 

https://opentutorials.org/module/1335/8634