컴퓨터에서 일정한 데이터를 구조적으로 표현하는 방식과 거기에 따른 알고리즘
예를 들어 도서관!!
책들이 무작위로 아무 곳에나 쌓여있으면 특정 책을 찾기란 매우 어려운 일이다. 책들끼리의 연관성을 통해 정리해 놓고 그 위치를 찾기 쉽게 해준다. 이처럼 체계적인 정리방법을 위한 것이 자료구조이다.
시간복잡도
자료를 처리하는데 걸리는 시간을 점근화 해서 개략적으로 나타낸 것.
O(n) : 운이 안 좋으면 n번 봐야한다.
왜 자료구조를 사용해야 하는가?
메모리를 효과적으로 사용하기 위해서이다. 쥐어짜듯이 하는 최적 코드는 아니더라도 허용 가능한 성능을 갖는 코드를 짤 수 있어야 한다. 자료구조의 이해는 이러한 능력을 갖추기 위한 조건이다.
컴퓨터에는 3가지 중요한 부품이 있다.
CPU : 중앙정보처리장치
레지스터(Register 연산담당. 현재 보는 책) + 캐쉬(Cache 보려는 책)
데이터를 연산/처리하는 가장 중요한 부분. 아주 빠르다.
Cache는 주기억 장치로부터 정보를 가져올 때 인접한 근처 정보까지 싹 가져온다. 미리 예측 해 퍼다 오르는 것.
메모리 : RAM(Random Access Memory).
CPU에서 직접 접근이 가능, 사용자가 자유롭게 내용을 읽고 쓰고 지울 수 있다.
휘발성 기억장치. 빠르다. 동적할당 해제 영역