컴퓨터 알고리즘을 공부하다 보면 자료구조 라는 이야기가.. 항상 같이 나온다...

그렇다면 자료구조는 무엇인가??

쉽게 예를 들어보면, 문구점에 가서 볼펜을 사려 할 때, 빨강, 파랑, 검정, 모두 어지럽게

한 공간에 꽂혀 있다면, 우리는 한 눈에 바로 내가 원하는 물건인지 확인을 하기 위해 하나씩 꺼내 봐야 할 지도 모른다...

하지만, 각 칸을 나눠서 여기는 빨강, 파랑, 검정, 그 중에서도 굵은 펜, 가는 펜 이렇게 분류가 되어있다면,

우리가 의사결정을 하는데 더 쉽고 수월할 것이다...

이것이 바로 자료구조인 셈이다...

이 것을 프로그램의 입장에서 바꿔보면, 데이터들이 중구난방으로 펼쳐져 있다면, 쉽게 접근하기도 어려울 뿐더러..

혹시 사용하게 되더라도 검증을 하거나, 처음부터 하나씩 빼서 확인하는 수 밖에 없다..

하지만 구역 별로 데이터들이 나눠져 있다면, 필요한 조건이 아닌 부분은 제외하고 검색을 하거나 할 수 있다..

이것은 바로 프로그램의 속도의 향상을 가져온다...

이렇게 같은 동작을 하는 프로그램이더라도, 얼마나 설계를 잘 했느냐, 꼭 필요한 자료구조를 사용하였나에 따라서

내부적으로 (혹은 외부적으로도) 더 빠르고, 버그가 없는 프로그램이 될 수 있을 것이다.

자료구조는 이론적인 부분과 효율적인 부분을 모두 다뤄야한다.

이론적으로 그래프 이론, 집합이론 등의 이론을 바탕으로 알고리즘을 분석하여 검색, 정렬 방법을 결정하고

효율적인 부분에서는 최상의 상태를 분석하여 결정해야한다..

이렇게 다양한 자료구조에 대해 이해하고, 논리적이고 수학적인 분석을 통해 최적의 알고리즘을 개발할 수 있는

이론적인 능력을 갖춰야지만 실제 시스템을 개발할 수 있는 고급 개발자가 될 수 있을 것이다..

자료구조는 크게 3가지로 나눌 수 있다..

선형구조, 비선형 구조, 파일 구조 이다...

선형 구조는 자료들간의 앞뒤 관계가 일대일로 고정되어 있는 구조로서, 리스트, 연결리스트, 스택, 큐, 덱 등이 있다.

비 선형 구조는 자료들간의 계층 구조나 망 구조를 갖는 자료구조로 트리와 그래프가 있다..

파일 구조는 서로 관련 있는 필드들로 구성된 레코드의 집합인 파일에 대한 자료구조로서, 보조기억장치에 데이터가

실제로 기록되는 자료구조다. 파일의 구성 방식에 따라 순차 파일과 색인 파일, 직접 파일 등이 있다...
Posted by 바람처럼..
|